casino_core 1.3.0 → 1.3.1

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/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- casino_core (1.3.0)
4
+ casino_core (1.3.1)
5
5
  activerecord (~> 3.2.9)
6
6
  addressable (~> 2.3)
7
7
  faraday (~> 0.8)
@@ -12,15 +12,15 @@ PATH
12
12
  GEM
13
13
  remote: http://rubygems.org/
14
14
  specs:
15
- activemodel (3.2.11)
16
- activesupport (= 3.2.11)
15
+ activemodel (3.2.12)
16
+ activesupport (= 3.2.12)
17
17
  builder (~> 3.0.0)
18
- activerecord (3.2.11)
19
- activemodel (= 3.2.11)
20
- activesupport (= 3.2.11)
18
+ activerecord (3.2.12)
19
+ activemodel (= 3.2.12)
20
+ activesupport (= 3.2.12)
21
21
  arel (~> 3.0.2)
22
22
  tzinfo (~> 0.3.29)
23
- activesupport (3.2.11)
23
+ activesupport (3.2.12)
24
24
  i18n (~> 0.6)
25
25
  multi_json (~> 1.0)
26
26
  addressable (2.3.2)
@@ -34,7 +34,7 @@ GEM
34
34
  faraday (0.8.5)
35
35
  multipart-post (~> 1.1)
36
36
  i18n (0.6.1)
37
- multi_json (1.5.0)
37
+ multi_json (1.6.1)
38
38
  multipart-post (1.1.5)
39
39
  nokogiri (1.5.6)
40
40
  rake (10.0.3)
@@ -58,7 +58,7 @@ GEM
58
58
  webmock (1.9.0)
59
59
  addressable (>= 2.2.7)
60
60
  crack (>= 0.1.7)
61
- yard (0.8.3)
61
+ yard (0.8.4.1)
62
62
 
63
63
  PLATFORMS
64
64
  ruby
@@ -9,8 +9,15 @@ module CASinoCore
9
9
 
10
10
  def find_valid_ticket_granting_ticket(tgt, user_agent, ignore_two_factor = false)
11
11
  ticket_granting_ticket = CASinoCore::Model::TicketGrantingTicket.where(ticket: tgt).first
12
- unless ticket_granting_ticket.nil? || (!ignore_two_factor && ticket_granting_ticket.awaiting_two_factor_authentication?)
13
- if same_browser?(ticket_granting_ticket.user_agent, user_agent)
12
+ unless ticket_granting_ticket.nil?
13
+ if ticket_granting_ticket.expired?
14
+ logger.info "Ticket-granting ticket expired (Created: #{ticket_granting_ticket.created_at})"
15
+ ticket_granting_ticket.destroy
16
+ nil
17
+ elsif !ignore_two_factor && ticket_granting_ticket.awaiting_two_factor_authentication?
18
+ logger.info 'Ticket-granting ticket is valid, but two-factor authentication is pending'
19
+ nil
20
+ elsif same_browser?(ticket_granting_ticket.user_agent, user_agent)
14
21
  ticket_granting_ticket.user_agent = user_agent
15
22
  ticket_granting_ticket.touch
16
23
  ticket_granting_ticket.save!
@@ -10,6 +10,10 @@ class CASinoCore::Model::TicketGrantingTicket < ActiveRecord::Base
10
10
  before_destroy :destroy_service_tickets
11
11
  after_destroy :destroy_proxy_granting_tickets
12
12
 
13
+ def self.cleanup
14
+ self.destroy_all(['created_at < ?', CASinoCore::Settings.ticket_granting_ticket[:lifetime].seconds.ago])
15
+ end
16
+
13
17
  def browser_info
14
18
  unless self.user_agent.blank?
15
19
  user_agent = UserAgent.parse(self.user_agent)
@@ -29,6 +33,11 @@ class CASinoCore::Model::TicketGrantingTicket < ActiveRecord::Base
29
33
  end
30
34
  end
31
35
 
36
+ def expired?
37
+ lifetime = CASinoCore::Settings.ticket_granting_ticket[:lifetime]
38
+ (Time.now - (self.created_at || Time.now)) > lifetime
39
+ end
40
+
32
41
  private
33
42
  def destroy_service_tickets
34
43
  self.service_tickets.each do |service_ticket|
@@ -3,11 +3,14 @@ require 'casino_core/authenticator'
3
3
  module CASinoCore
4
4
  class Settings
5
5
  class << self
6
- attr_accessor :login_ticket, :service_ticket, :proxy_ticket, :two_factor_authenticator, :authenticators, :logger
6
+ attr_accessor :login_ticket, :ticket_granting_ticket, :service_ticket, :proxy_ticket, :two_factor_authenticator, :authenticators, :logger
7
7
  DEFAULT_SETTINGS = {
8
8
  login_ticket: {
9
9
  lifetime: 600
10
10
  },
11
+ ticket_granting_ticket: {
12
+ lifetime: 86400
13
+ },
11
14
  service_ticket: {
12
15
  lifetime_unconsumed: 300,
13
16
  lifetime_consumed: 86400
@@ -35,8 +35,14 @@ namespace :casino_core do
35
35
  puts "Deleted #{rows_affected} inactive two-factor authenticators."
36
36
  end
37
37
 
38
+ desc 'Remove expired ticket-granting tickets.'
39
+ task ticket_granting_tickets: 'casino_core:db:configure_connection' do
40
+ rows_affected = CASinoCore::Model::TicketGrantingTicket.cleanup.length
41
+ puts "Deleted #{rows_affected} ticket-granting tickets."
42
+ end
43
+
38
44
  desc 'Perform all cleanup tasks.'
39
- task all: [:service_tickets, :proxy_tickets, :login_tickets, :two_factor_authenticators] do
45
+ task all: [:ticket_granting_tickets, :service_tickets, :proxy_tickets, :login_tickets, :two_factor_authenticators] do
40
46
  end
41
47
  end
42
48
  end
@@ -1,3 +1,3 @@
1
1
  module CASinoCore
2
- VERSION = '1.3.0'
2
+ VERSION = '1.3.1'
3
3
  end
@@ -80,4 +80,36 @@ describe CASinoCore::Model::TicketGrantingTicket do
80
80
  end
81
81
  end
82
82
  end
83
+
84
+ describe '#expired?' do
85
+ context 'with an expired ticket' do
86
+ before(:each) do
87
+ ticket_granting_ticket.created_at = 25.hours.ago
88
+ ticket_granting_ticket.save!
89
+ end
90
+
91
+ it 'returns true' do
92
+ ticket_granting_ticket.expired?.should == true
93
+ end
94
+ end
95
+
96
+ context 'with an unexpired ticket' do
97
+ it 'returns false' do
98
+ ticket_granting_ticket.expired?.should == false
99
+ end
100
+ end
101
+ end
102
+
103
+ describe '.cleanup' do
104
+ let!(:other_ticket_granting_ticket) { FactoryGirl.create :ticket_granting_ticket }
105
+
106
+ it 'deletes expired ticket-granting tickets' do
107
+ ticket_granting_ticket.created_at = 25.hours.ago
108
+ ticket_granting_ticket.save!
109
+ lambda do
110
+ described_class.cleanup
111
+ end.should change(described_class, :count).by(-1)
112
+ described_class.find_by_ticket(ticket_granting_ticket.ticket).should be_false
113
+ end
114
+ end
83
115
  end
@@ -64,6 +64,18 @@ describe CASinoCore::Processor::LoginCredentialRequestor do
64
64
  end
65
65
  end
66
66
 
67
+ context 'when ticket-granting ticket expired' do
68
+ before(:each) do
69
+ ticket_granting_ticket.created_at = 25.hours.ago
70
+ ticket_granting_ticket.save!
71
+ end
72
+
73
+ it 'calls the #user_not_logged_in method on the listener' do
74
+ listener.should_receive(:user_not_logged_in).with(kind_of(CASinoCore::Model::LoginTicket))
75
+ processor.process(nil, cookies, user_agent)
76
+ end
77
+ end
78
+
67
79
  context 'with a service' do
68
80
  let(:service) { 'http://example.com/' }
69
81
  let(:params) { { service: service } }
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: casino_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -36,7 +36,7 @@ cert_chain:
36
36
  b1VSdnUwRzgvWXlIVUFtSVUvV0tyanIxYmdjZjFWUnYKUjRLRDFNblVWL3Y1
37
37
  MDJwaU1sWG1qeE9XZGJLOHl2UUVIa3N1L3pqYkNqU3UrTTJrd0ZtV0dzeDVu
38
38
  eCtWZHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
39
- date: 2013-02-08 00:00:00.000000000 Z
39
+ date: 2013-02-17 00:00:00.000000000 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
@@ -431,7 +431,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
431
431
  version: '0'
432
432
  segments:
433
433
  - 0
434
- hash: 1075447066647602137
434
+ hash: 4202762284368637569
435
435
  required_rubygems_version: !ruby/object:Gem::Requirement
436
436
  none: false
437
437
  requirements:
@@ -440,7 +440,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
440
440
  version: '0'
441
441
  segments:
442
442
  - 0
443
- hash: 1075447066647602137
443
+ hash: 4202762284368637569
444
444
  requirements: []
445
445
  rubyforge_project:
446
446
  rubygems_version: 1.8.24
metadata.gz.sig CHANGED
@@ -1 +1,3 @@
1
- ���þ�i�cʞ|� ⦏m4��~����V��o\�d��9�3�2ҹ�ǰd@�(yy�謵��[�k�����!u�"��L(�+�z�\��� ���r�)���l�N�ߌ{c�+�����S7�� ��z�}'��o ���R���ħl�̆����� ����[ jq���'F`��7q�m���p�R�l-�:XB² B��%k��T&�Bᣔ#�__�k�Yf�_�]*M�]mk��Q�B
1
+ ��p\T5|��sSE�*
2
+ _f���O���}!#��� �T�.�re8e5�ȄZ�Z��.��{���R��+�\��/�P�p}7��ܫ�j\�s�" ��ܟ�[S����]�:���„~!$�|&��NƠ�\X��չl!za�����Ӷw�F�Ux�=
3
+ V��U���x��f����Y+������;&���Y��9�E>ߔ��f<�.�H�62d�)���۠�]�x3������/�3tJղfBۅSq &