Sha256: 2d2d973210b1e81a0eb9a3d2181a50a12414bb50c3c4bd4e3a054c13a20245ed

Contents?: true

Size: 1.01 KB

Versions: 5

Compression:

Stored size: 1.01 KB

Contents

# frozen_string_literal: true

require 'ditty/models/user'

module Ditty
  module Helpers
    module Authentication
      def current_user
        return nil if current_user_id.nil?

        @current_user ||= User[current_user_id]
      end

      def current_user=(user)
        env['rack.session'] = {} if env['rack.session'].nil?
        env['rack.session']['user_id'] = user.id if user
        @current_user = user
      end

      def current_user_id
        return env['rack.session']['user_id'] if env['rack.session'] && env['rack.session']['user_id']

        env['omniauth.auth']&.uid
      end

      def authenticate
        authenticated?
      end

      def authenticated?
        current_user && !current_user.role?('anonymous')
      end

      def authenticate!
        raise NotAuthenticated unless authenticated?

        true
      end

      def logout
        env['rack.session']&.delete('user_id')
        env.delete('omniauth.auth')
      end
    end

    class NotAuthenticated < StandardError
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ditty-0.10.2 lib/ditty/helpers/authentication.rb
ditty-0.10.1 lib/ditty/helpers/authentication.rb
ditty-0.9.1 lib/ditty/helpers/authentication.rb
ditty-0.9.0 lib/ditty/helpers/authentication.rb
ditty-0.8.0 lib/ditty/helpers/authentication.rb