Sha256: 773e861470bf9a9736c272077ca75fdd7b121f02e16634904c23e008328b6899

Contents?: true

Size: 899 Bytes

Versions: 3

Compression:

Stored size: 899 Bytes

Contents

class ServiceTicket
  class << self
    def find!(ticket, store)
      username = store.hget(ticket, :username)
      service_url = store.hget(ticket, :service_url)
      
      if service_url && username
        store.del ticket
        new(service_url, username)
      end
    end
    
    def expire_time
      300
    end
  end
  
  attr_reader :username, :service_url
  
  def initialize(service_url, username)
    @service_url = service_url
    @username = username
  end
  
  def valid_for_service?(url)
    service_url == url
  end
  
  def ticket
    @ticket ||= "ST-#{rand(100000000000000000)}".to_s
  end
  
  def remaining_time(store)
    store.ttl ticket
  end
  
  def save!(store)

    store.pipelined do 
      store.hset ticket, :service_url, self.service_url
      store.hset ticket, :username, self.username
      store.expire ticket, self.class.expire_time
    end
    
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
classy_cas-0.9.3 lib/service_ticket.rb
classy_cas-0.9.2 lib/service_ticket.rb
classy_cas-0.9.1 lib/service_ticket.rb