Module: Ez::Sessions::API

Included in:
Model
Defined in:
lib/ez/sessions/api.rb

Instance Method Summary collapse

Instance Method Details

#create_session(user_id:, user_agent: nil, expires_at: nil) ⇒ Object



8
9
10
11
12
13
14
# 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) ⇒ Object



27
28
29
30
31
32
# 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) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# 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