Sha256: ff58869f75424a56553161a689433a68876eea53eb4f92834eb08693b3602e45

Contents?: true

Size: 803 Bytes

Versions: 29

Compression:

Stored size: 803 Bytes

Contents

# frozen_string_literal: true

module Shimmer
  module Auth
    module Authenticating
      extend ActiveSupport::Concern

      included do
        before_action :authenticate
        helper_method :current_user

        def require_login
          redirect_to login_path unless current_user
        end

        def current_user
          ::Current.user
        end

        def login(device:)
          ::Current.device = device
          cookies.encrypted[:device_token] = {value: device.token, expires: 2.years.from_now}
        end

        def logout
          cookies.delete :device_token
        end

        private

        def authenticate
          ::Current.device = cookies.encrypted[:device_token].presence&.then { |e| ::Device.find_by token: e }
        end
      end
    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
shimmer-0.0.21 lib/shimmer/auth/authenticating.rb
shimmer-0.0.20 lib/shimmer/auth/authenticating.rb
shimmer-0.0.19 lib/shimmer/auth/authenticating.rb
shimmer-0.0.18 lib/shimmer/auth/authenticating.rb
shimmer-0.0.17 lib/shimmer/auth/authenticating.rb
shimmer-0.0.16 lib/shimmer/auth/authenticating.rb
shimmer-0.0.15 lib/shimmer/auth/authenticating.rb
shimmer-0.0.14 lib/shimmer/auth/authenticating.rb
shimmer-0.0.13 lib/shimmer/auth/authenticating.rb