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



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

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

.generate_master(user, options) ⇒ Object



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

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



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

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

.master_for(grant_id) ⇒ Object



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

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

.with_grant_id(grant_id) ⇒ Object



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

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

.with_token_id(token_id) ⇒ Object



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

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

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


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

def active?
  revoked_at.blank?
end

#logoutObject



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

def logout
  clients.with_access_token.each do |c|
    c.access_token.revoke
  end
  update revoked_at: Time.current, revoke_reason: "logout"
end