class JWTSessions::AccessToken

Attributes

csrf[R]
expiration[R]
payload[R]
store[R]
uid[R]

Public Class Methods

create(csrf, payload, store, expiration = JWTSessions.access_expiration) click to toggle source
# File lib/jwt_sessions/access_token.rb, line 32
def create(csrf, payload, store, expiration = JWTSessions.access_expiration)
  new(csrf, payload, store, SecureRandom.uuid, expiration).tap do |inst|
    store.persist_access(inst.uid, inst.csrf, inst.expiration)
  end
end
destroy(uid, store) click to toggle source
# File lib/jwt_sessions/access_token.rb, line 38
def destroy(uid, store)
  store.destroy_access(uid)
end
find(uid, store) click to toggle source

AccessToken's find method cannot be used to retrieve token's payload or any other information but is intended to identify if the token is present and to retrieve session's CSRF token

# File lib/jwt_sessions/access_token.rb, line 45
def find(uid, store)
  token_attrs = store.fetch_access(uid)
  raise Errors::Unauthorized, "Access token not found" if token_attrs.empty?
  build_with_token_attrs(store, uid, token_attrs)
end
new(csrf, payload, store, uid = SecureRandom.uuid, expiration = JWTSessions.access_expiration) click to toggle source
# File lib/jwt_sessions/access_token.rb, line 7
def initialize(csrf, payload, store, uid = SecureRandom.uuid, expiration = JWTSessions.access_expiration)
  @csrf       = csrf
  @uid        = uid
  @expiration = expiration
  @payload    = payload.merge("uid" => uid, "exp" => expiration.to_i)
  @store      = store
end

Private Class Methods

build_with_token_attrs(store, uid, token_attrs) click to toggle source
# File lib/jwt_sessions/access_token.rb, line 53
def build_with_token_attrs(store, uid, token_attrs)
  new(token_attrs[:csrf], {}, store, uid)
end

Public Instance Methods

destroy() click to toggle source
# File lib/jwt_sessions/access_token.rb, line 15
def destroy
  store.destroy_access(uid)
end
refresh_uid() click to toggle source
# File lib/jwt_sessions/access_token.rb, line 23
def refresh_uid
  payload["ruid"]
end
refresh_uid=(uid) click to toggle source
# File lib/jwt_sessions/access_token.rb, line 19
def refresh_uid=(uid)
  self.payload["ruid"] = uid
end
token() click to toggle source
# File lib/jwt_sessions/access_token.rb, line 27
def token
  Token.encode(payload)
end