Class: Token

Inherits:
ApplicationRecord
  • Object
show all
Includes:
Checkable, HasOwner, HasTrack, Toggleable
Defined in:
app/models/token.rb

Overview

Authentication token

Attributes:

active [boolean]
agent_id [Agent], optional
created_at [DateTime]
ip_address_id [IpAddress], optional
last_used [datetime]
updated_at [DateTime]
user_id [User]
token [string]

Constant Summary collapse

TOKEN_LIMIT =
255

Class Method Summary collapse

Instance Method Summary collapse

Methods included from HasOwner

#owned_by?, #owner_name

Class Method Details

.[](input) ⇒ Object

Parameters:

  • input (String)


57
58
59
# File 'app/models/token.rb', line 57

def self.[](input)
  find_by(token: input.to_s.split(':')[1].to_s)
end

.creation_parametersObject



52
53
54
# File 'app/models/token.rb', line 52

def self.creation_parameters
  entity_parameters + %i[user_id]
end

.entity_parametersObject



48
49
50
# File 'app/models/token.rb', line 48

def self.entity_parameters
  %i[active]
end

.page_for_administration(page = 1, filter = {}) ⇒ Object

Parameters:

  • page (Integer) (defaults to: 1)
  • filter (Hash) (defaults to: {})


38
39
40
# File 'app/models/token.rb', line 38

def self.page_for_administration(page = 1, filter = {})
  filtered(filter).list_for_administration.page(page)
end

.page_for_owner(user, page = 1) ⇒ Object

Parameters:

  • user (User)
  • page (Integer) (defaults to: 1)


44
45
46
# File 'app/models/token.rb', line 44

def self.page_for_owner(user, page = 1)
  list_for_owner(user).page(page)
end

.user_by_pair(user_id, token, touch_user = false) ⇒ Object

Parameters:

  • user_id (Integer)
  • token (String)
  • touch_user (Boolean) (defaults to: false)


73
74
75
76
77
78
79
80
# File 'app/models/token.rb', line 73

def self.user_by_pair(user_id, token, touch_user = false)
  instance = find_by(user_id: user_id, token: token, active: true)
  return if instance.nil?

  instance.update_columns(last_used: Time.now)
  instance.user.update_columns(last_seen: Time.now) if touch_user
  instance.user
end

.user_by_token(input, touch_user = false) ⇒ Object

Parameters:

  • input (String)
  • touch_user (Boolean) (defaults to: false)


63
64
65
66
67
68
# File 'app/models/token.rb', line 63

def self.user_by_token(input, touch_user = false)
  return if input.blank?

  pair = input.split(':')
  user_by_pair(pair[0].to_i, pair[1], touch_user)
end

Instance Method Details



97
98
99
# File 'app/models/token.rb', line 97

def cookie_pair
  "#{user_id}:#{token}"
end

#editable_by?(user) ⇒ Boolean

Parameters:

Returns:

  • (Boolean)


91
92
93
94
95
# File 'app/models/token.rb', line 91

def editable_by?(user)
  return true if owned_by?(user)

  Biovision::Components::UsersComponent[user].permit?('edit', self)
end

#nameObject



82
83
84
# File 'app/models/token.rb', line 82

def name
  "[#{id}] #{user.profile_name}"
end


86
87
88
# File 'app/models/token.rb', line 86

def text_for_link
  name
end