Sha256: dc113842312ee9f16ae71a816d7b7892f2480be2c3813068ff7b306f5af44969
Contents?: true
Size: 1.53 KB
Versions: 1
Compression:
Stored size: 1.53 KB
Contents
# frozen_string_literal: true module CurrentSession # # Base class for processing to get session_token from request.session # class SessionMethod def self.new_session_class(session_methods) Class.new(CurrentSession::SessionMethod) { include session_methods } end 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 attr_reader :current_time, :request, :user_class, :session_token_class def find_by_token(&block) try_session_token { find(&block) } end def delete_session_token try_session_token do request.session.delete(key) destroy end end def update_session_token(user) create(user) { |value| request.session[key] = value } end protected def try_session_token session_token.presence.try do yield self end end def find fail NotImplementedError, "You must implement #{self.class}##{__method__}" end def create(user, &block) fail NotImplementedError, "You must implement #{self.class}##{__method__}" end def destroy fail NotImplementedError, "You must implement #{self.class}##{__method__}" end def key @key ||= CurrentSession.key(user_class) end def session_token @session_token ||= request.session[key] end def new_session_token SecureRandom.urlsafe_base64(64) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
current_session-0.1.6 | lib/current_session/session_method.rb |