module Ez::Sessions::API

Public Instance Methods

create_session(user_id:, user_agent: nil, expires_at: nil) click to toggle source
# File lib/ez/sessions/api.rb, line 8
def create_session(user_id:, user_agent: nil, expires_at: nil)
  Ez::Sessions::Model.create!(
    user_id:    user_id,
    user_agent: user_agent,
    expires_at: expires_at || 30.days.from_now
  )
end
decode_session(session_token) click to toggle source
# File lib/ez/sessions/api.rb, line 27
def decode_session(session_token)
  payload = JWT.decode(session_token, Ez::Sessions.config.token_secret_base).first
  Ez::Sessions::Model.find_by!(id: payload.fetch('session_id'))
rescue StandardError
  Ez::Sessions.config.on_invalid_session_token.call
end
encode_token(session_record) click to toggle source
# File lib/ez/sessions/api.rb, line 16
def encode_token(session_record)
  JWT.encode(
    {
      session_id: session_record.id,
      user_id:    session_record.user_id,
      exp:        session_record.expires_at.to_i
    },
    Ez::Sessions.config.token_secret_base
  )
end