Module: CASino::TicketGrantingTicketProcessor
- Extended by:
- ActiveSupport::Concern
- Includes:
- BrowserProcessor
- Included in:
- SessionsHelper
- Defined in:
- app/processors/casino/ticket_granting_ticket_processor.rb
Instance Method Summary
collapse
#browser_info, #same_browser?
Instance Method Details
#acquire_ticket_granting_ticket(authentication_result, user_agent, options = {}) ⇒ Object
28
29
30
31
32
33
34
35
36
37
|
# File 'app/processors/casino/ticket_granting_ticket_processor.rb', line 28
def acquire_ticket_granting_ticket(authentication_result, user_agent, options = {})
user_data = authentication_result[:user_data]
user = load_or_initialize_user(authentication_result[:authenticator], user_data[:username], user_data[:extra_attributes])
cleanup_expired_ticket_granting_tickets(user)
user.ticket_granting_tickets.create!({
awaiting_two_factor_authentication: !user.active_two_factor_authenticator.nil?,
user_agent: user_agent,
long_term: !!options[:long_term]
})
end
|
#cleanup_expired_ticket_granting_tickets(user) ⇒ Object
53
54
55
|
# File 'app/processors/casino/ticket_granting_ticket_processor.rb', line 53
def cleanup_expired_ticket_granting_tickets(user)
CASino::TicketGrantingTicket.cleanup(user)
end
|
#find_valid_ticket_granting_ticket(ticket, user_agent, options = {}) ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'app/processors/casino/ticket_granting_ticket_processor.rb', line 6
def find_valid_ticket_granting_ticket(ticket, user_agent, options = {})
tgt = CASino::TicketGrantingTicket.where(ticket: ticket).first
unless tgt.nil?
if tgt.expired?
Rails.logger.info "Ticket-granting ticket expired (Created: #{tgt.created_at})"
tgt.destroy
nil
elsif !options[:ignore_two_factor] && tgt.awaiting_two_factor_authentication?
Rails.logger.info 'Ticket-granting ticket is valid, but two-factor authentication is pending'
nil
elsif same_browser?(tgt.user_agent, user_agent)
tgt.user_agent = user_agent
tgt.touch
tgt.save!
tgt
else
Rails.logger.info 'User-Agent changed: ticket-granting ticket not valid for this browser'
nil
end
end
end
|
#load_or_initialize_user(authenticator, username, extra_attributes) ⇒ Object
39
40
41
42
43
44
45
46
|
# File 'app/processors/casino/ticket_granting_ticket_processor.rb', line 39
def load_or_initialize_user(authenticator, username, )
user = CASino::User
.where(authenticator: authenticator, username: username)
.first_or_initialize
user. =
user.save!
return user
end
|
#remove_ticket_granting_ticket(ticket_granting_ticket, user_agent) ⇒ Object
48
49
50
51
|
# File 'app/processors/casino/ticket_granting_ticket_processor.rb', line 48
def remove_ticket_granting_ticket(ticket_granting_ticket, user_agent)
tgt = find_valid_ticket_granting_ticket(ticket_granting_ticket, user_agent)
tgt.destroy unless tgt.nil?
end
|