Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fixing rails4 compatibility #69

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ gemfile:
- gemfiles/rails30.gemfile
- gemfiles/rails31.gemfile
- gemfiles/rails32.gemfile
- gemfiles/rails4.gemfile
rvm:
- 1.8.7
- 1.9.2
Expand All @@ -28,5 +29,13 @@ matrix:
gemfile: gemfiles/rails23.gemfile
- rvm: rbx-19mode
gemfile: gemfiles/rails23.gemfile
- rvm: 1.8.7
gemfile: gemfiles/rails4.gemfile
- rvm: 1.9.2
gemfile: gemfiles/rails4.gemfile
- rvm: jruby-18mode
gemfile: gemfiles/rails4.gemfile
- rvm: rbx-18mode
gemfile: gemfiles/rails4.gemfile
allow_failures:
- rvm: jruby-head
5 changes: 5 additions & 0 deletions Appraisals
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,9 @@ appraise "rails32" do
gem "rails", "~> 3.2.8"
end

appraise "rails4" do
gem "rails", "~> 4.0.0"
gem "activerecord-session_store", "~> 0.0.1", :require => false
end

# vim: filetype=ruby
8 changes: 8 additions & 0 deletions gemfiles/rails4.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# This file was generated by Appraisal

source "http://rubygems.org"

gem "rails", "~> 4.0.0"
gem "activerecord-session_store", "~> 0.0.1", :require=>false

gemspec :path=>"../"
5 changes: 3 additions & 2 deletions lib/casclient/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -112,12 +112,13 @@ def proxy_url
@proxy_url || (cas_base_url + "/proxy")
end

def validate_service_ticket(st)
def validate_service_ticket(st,consume=true)
uri = URI.parse(validate_url)
h = uri.query ? query_to_hash(uri.query) : {}
h['service'] = st.service
h['ticket'] = st.ticket
h['renew'] = "1" if st.renew
h['renew'] = '1' if st.renew
h['consume'] = consume.to_s
h['pgtUrl'] = proxy_callback_url if proxy_callback_url
uri.query = hash_to_query(h)

Expand Down
16 changes: 8 additions & 8 deletions lib/casclient/tickets.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,36 @@ module CASClient
class ServiceTicket
attr_reader :ticket, :service, :renew
attr_accessor :user, :extra_attributes, :pgt_iou, :success, :failure_code, :failure_message

def initialize(ticket, service, renew = false)
@ticket = ticket
@service = service
@renew = renew
end

def is_valid?
success
end

def has_been_validated?
not user.nil?
end
end

# Represents a CAS proxy ticket.
class ProxyTicket < ServiceTicket
end

class ProxyGrantingTicket
attr_reader :ticket, :iou

def initialize(ticket, iou)
@ticket = ticket
@iou = iou
end

def to_s
ticket
end
end
end
end
20 changes: 20 additions & 0 deletions lib/casclient/tickets/storage/active_record_ticket_store.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
# rails4 specific
if Gem.loaded_specs["activesupport"].version.to_s =~ /^4/
require 'active_record'
require 'active_record/session_store'

# wrapper around ActionDispatch::Session::ActiveRecordStore
# as ActiveRecord::SessionStore.session_class doesn't exist in rails4
module ActiveRecord

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't seem to be working as intended? Unless I'm missing something.

NoMethodError - undefined method `session_class' for ActiveRecord::SessionStore:Module:
   () Users/altonymous/.rvm/gems/ruby-2.0.0-p353@client/bundler/gems/rubycas-client-f1b17063b824/lib/casclient/tickets/storage.rb:32:in `get_session_for_service_ticket'
   () Users/altonymous/.rvm/gems/ruby-2.0.0-p353@client/bundler/gems/rubycas-client-f1b17063b824/lib/casclient/tickets/storage.rb:13:in `process_single_sign_out'
   () Users/altonymous/.rvm/gems/ruby-2.0.0-p353@client/bundler/gems/rubycas-client-f1b17063b824/lib/casclient/frameworks/rails/filter.rb:300:in `single_sign_out'
   () Users/altonymous/.rvm/gems/ruby-2.0.0-p353@client/bundler/gems/rubycas-client-f1b17063b824/lib/casclient/frameworks/rails/filter.rb:28:in `filter'

module SessionStore
def self.session_class
ActionDispatch::Session::ActiveRecordStore.session_class
end

def self.session_class=(klass)
ActionDispatch::Session::ActiveRecordStore.session_class = klass
end
end
end
end

module CASClient
module Tickets
module Storage
Expand Down
2 changes: 1 addition & 1 deletion rubycas-client.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Gem::Specification.new do |gem|

gem.add_dependency("activesupport")
gem.add_development_dependency("rake")
gem.add_development_dependency("database_cleaner", "~> 0.9.1")
gem.add_development_dependency("database_cleaner", "~> 1.0.1")
gem.add_development_dependency("json")
gem.add_development_dependency("rspec")
gem.add_development_dependency("appraisal")
Expand Down