Sha256: f10b69a35bb9232d702a82095dab7006120100612dd4138ce47a95906e088b45

Contents?: true

Size: 896 Bytes

Versions: 2

Compression:

Stored size: 896 Bytes

Contents

# frozen_string_literal: true

module CurrentSession
  #
  # session Method
  #
  class SessionMethod
    def self.new_class(methods)
      Class.new(self) do
        include methods
      end
    end

    def self.define(&block)
      Module.new do
        define_method(:find, &block)
        define_method(:create) {}
        define_method(:destroy) {}
      end
    end

    def initialize(request)
      @request = request
    end
    attr_reader :request

    #
    # @return User
    #
    def find
      fail NotImplementedError, "You must implement #{self.class}##{__method__}"
    end

    def create(user)
      fail NotImplementedError, "You must implement #{self.class}##{__method__}"
    end

    def destroy
      fail NotImplementedError, "You must implement #{self.class}##{__method__}"
    end

    def new_session_token
      SecureRandom.urlsafe_base64(128)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
current_session-0.1.8 lib/current_session/session_method.rb
current_session-0.1.7 lib/current_session/session_method.rb