Class: CurrentSession::Repository

Inherits:
Object
  • Object
show all
Defined in:
lib/current_session/repository.rb

Overview

Base class for processing to get session_token from request.session

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(current_time:, request:, user_class:, session_token_class:) ⇒ Repository

Returns a new instance of Repository.



8
9
10
11
12
13
# File 'lib/current_session/repository.rb', line 8

def initialize(current_time:, request:, user_class:, session_token_class:)
  @current_time = current_time
  @request = request
  @user_class = user_class
  @session_token_class = session_token_class
end

Instance Attribute Details

#current_timeObject (readonly)

Returns the value of attribute current_time.



14
15
16
# File 'lib/current_session/repository.rb', line 14

def current_time
  @current_time
end

#requestObject (readonly)

Returns the value of attribute request.



14
15
16
# File 'lib/current_session/repository.rb', line 14

def request
  @request
end

#session_token_classObject (readonly)

Returns the value of attribute session_token_class.



14
15
16
# File 'lib/current_session/repository.rb', line 14

def session_token_class
  @session_token_class
end

#user_classObject (readonly)

Returns the value of attribute user_class.



14
15
16
# File 'lib/current_session/repository.rb', line 14

def user_class
  @user_class
end

Instance Method Details

#delete_session_tokenObject



28
29
30
# File 'lib/current_session/repository.rb', line 28

def delete_session_token
  request.session.delete(key)
end

#keyObject



16
17
18
# File 'lib/current_session/repository.rb', line 16

def key
  @key ||= CurrentSession.key(user_class)
end

#new_session_tokenObject



24
25
26
# File 'lib/current_session/repository.rb', line 24

def new_session_token
  SecureRandom.urlsafe_base64(64)
end

#session_tokenObject



20
21
22
# File 'lib/current_session/repository.rb', line 20

def session_token
  @session_token ||= request.session[key]
end

#tryObject



36
37
38
39
40
# File 'lib/current_session/repository.rb', line 36

def try
  session_token.presence.try do |_|
    yield self
  end
end

#update_session_token(user) ⇒ Object



32
33
34
# File 'lib/current_session/repository.rb', line 32

def update_session_token(user)
  request.session[key] = create(user)
end