Class: Sso::Session

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
Logging
Defined in:
app/models/sso/session.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Logging

#debug, #error, #fatal, #info, #warn

Class Method Details

.by_access_token(token) ⇒ Object



35
36
37
38
# File 'app/models/sso/session.rb', line 35

def by_access_token(token)
  oauth_token = ::Doorkeeper::AccessToken.by_token(token)
  with_token_id(oauth_token.id)
end

.generate_master(user, options) ⇒ Object



40
41
42
43
44
45
46
47
# File 'app/models/sso/session.rb', line 40

def generate_master(user, options)
  attributes = ActionController::Parameters.new(options).permit(:ip, :agent, :location)
  sso_session = self.new( owner: user )
  sso_session.clients.build(attributes)
  debug { "Sso::Session::generate_master for #{user.inspect} - #{sso_session.inspect}" }
  sso_session.save!
  sso_session
end

.logout(sso_session_id) ⇒ Object



49
50
51
52
# File 'app/models/sso/session.rb', line 49

def logout(sso_session_id)
  return false unless session = find_by_id(sso_session_id)
  session.logout
end

.master_for(grant_id) ⇒ Object



23
24
25
# File 'app/models/sso/session.rb', line 23

def master_for(grant_id)
  active.find_by!(access_grant_id: grant_id)
end

.with_grant_id(grant_id) ⇒ Object



31
32
33
# File 'app/models/sso/session.rb', line 31

def with_grant_id(grant_id)
  includes(:clients).where("sso_clients.access_grant_id": grant_id)
end

.with_token_id(token_id) ⇒ Object



27
28
29
# File 'app/models/sso/session.rb', line 27

def with_token_id(token_id)
  includes(:clients).where("sso_clients.access_token_id": token_id)
end

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'app/models/sso/session.rb', line 55

def active?
  revoked_at.blank?
end

#logoutObject



59
60
61
# File 'app/models/sso/session.rb', line 59

def logout
  update revoked_at: Time.current, revoke_reason: "logout"
end