Module: CASinoCore::Helper::TicketGrantingTickets
- Includes:
- Browser, Logger
- Included in:
- Processor::API::LoginCredentialAcceptor, Processor::API::Logout, Processor::API::ServiceTicketProvider, Processor::LoginCredentialAcceptor, Processor::LoginCredentialRequestor, Processor::Logout, Processor::OtherSessionsDestroyer, Processor::SecondFactorAuthenticationAcceptor, Processor::SessionOverview, Processor::TwoFactorAuthenticatorActivator, Processor::TwoFactorAuthenticatorDestroyer, Processor::TwoFactorAuthenticatorOverview, Processor::TwoFactorAuthenticatorRegistrator
- Defined in:
- lib/casino_core/helper/ticket_granting_tickets.rb
Instance Method Summary
collapse
Methods included from Logger
#logger
Methods included from Browser
#browser_info, #same_browser?
Instance Method Details
#acquire_ticket_granting_ticket(authentication_result, user_agent = nil, long_term = nil) ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/casino_core/helper/ticket_granting_tickets.rb', line 32
def acquire_ticket_granting_ticket(authentication_result, user_agent = nil, long_term = nil)
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!({
ticket: random_ticket_string('TGC'),
awaiting_two_factor_authentication: !user.active_two_factor_authenticator.nil?,
user_agent: user_agent,
long_term: !!long_term
})
end
|
#cleanup_expired_ticket_granting_tickets(user) ⇒ Object
#find_valid_ticket_granting_ticket(tgt, user_agent, ignore_two_factor = false) ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/casino_core/helper/ticket_granting_tickets.rb', line 10
def find_valid_ticket_granting_ticket(tgt, user_agent, ignore_two_factor = false)
ticket_granting_ticket = CASinoCore::Model::TicketGrantingTicket.where(ticket: tgt).first
unless ticket_granting_ticket.nil?
if ticket_granting_ticket.expired?
logger.info "Ticket-granting ticket expired (Created: #{ticket_granting_ticket.created_at})"
ticket_granting_ticket.destroy
nil
elsif !ignore_two_factor && ticket_granting_ticket.awaiting_two_factor_authentication?
logger.info 'Ticket-granting ticket is valid, but two-factor authentication is pending'
nil
elsif same_browser?(ticket_granting_ticket.user_agent, user_agent)
ticket_granting_ticket.user_agent = user_agent
ticket_granting_ticket.touch
ticket_granting_ticket.save!
ticket_granting_ticket
else
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
44
45
46
47
48
49
50
51
|
# File 'lib/casino_core/helper/ticket_granting_tickets.rb', line 44
def load_or_initialize_user(authenticator, username, )
user = CASinoCore::Model::User.where(
authenticator: authenticator,
username: username).first_or_initialize
user. =
user.save!
return user
end
|
#remove_ticket_granting_ticket(ticket_granting_ticket, user_agent = nil) ⇒ Object
53
54
55
56
57
58
|
# File 'lib/casino_core/helper/ticket_granting_tickets.rb', line 53
def remove_ticket_granting_ticket(ticket_granting_ticket, user_agent = nil)
tgt = find_valid_ticket_granting_ticket(ticket_granting_ticket, user_agent)
unless tgt.nil?
tgt.destroy
end
end
|