Class: Toolchest::Token

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/toolchest/token.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.find_by_raw_token(raw_token) ⇒ Object



23
24
25
26
# File 'app/models/toolchest/token.rb', line 23

def find_by_raw_token(raw_token)
  digest = OpenSSL::Digest::SHA256.hexdigest(raw_token)
  active.find_by(token_digest: digest)
end

.generate(owner: nil, name: nil, scopes: nil, namespace: "default", expires_at: nil) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'app/models/toolchest/token.rb', line 28

def generate(owner: nil, name: nil, scopes: nil, namespace: "default", expires_at: nil)
  raw = "tcht_#{SecureRandom.hex(24)}"
  digest = OpenSSL::Digest::SHA256.hexdigest(raw)

  owner_type, owner_id = owner&.split(":", 2)

  token = create!(
    token_digest: digest,
    name: name,
    owner_type: owner_type,
    owner_id: owner_id,
    scopes: scopes,
    namespace: namespace,
    expires_at: expires_at
  )

  token.instance_variable_set(:@raw_token, raw)
  token
end

Instance Method Details

#accessible?Boolean

Returns:

  • (Boolean)


16
# File 'app/models/toolchest/token.rb', line 16

def accessible? = !revoked? && !expired?

#expired?Boolean

Returns:

  • (Boolean)


12
# File 'app/models/toolchest/token.rb', line 12

def expired? = expires_at.present? && expires_at < Time.current

#raw_tokenObject



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

def raw_token = @raw_token

#revoke!Object



18
# File 'app/models/toolchest/token.rb', line 18

def revoke! = update!(revoked_at: Time.current)

#revoked?Boolean

Returns:

  • (Boolean)


14
# File 'app/models/toolchest/token.rb', line 14

def revoked? = revoked_at.present?

#scopes_arrayObject



20
# File 'app/models/toolchest/token.rb', line 20

def scopes_array = (scopes || "").split(" ").reject(&:empty?)