Sha256: 58a18a195abaac8824b4b1abdd344d7ca7bf7e5cc9741d63a42940b3e57fc41a

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

module RailsSso
  module Helpers
    def self.included(base)
      base.class_eval do
        helper_method :current_user_data, :user_signed_in?
      end
    end

    def current_user_data
      @current_user ||= fetch_user
    end

    def user_signed_in?
      !!current_user_data
    end

    def authenticate_user!
      redirect_to sso.sign_in_path unless user_signed_in?
    end

    def access_token
      RailsSso::AccessToken.new(session[:access_token], session[:refresh_token])
    end

    def invalidate_access_token!
      if RailsSso.provider_sign_out_path
        access_token.delete(RailsSso.provider_sign_out_path)
      end

      reset_session
    end

    def save_access_token!(access_token)
      session[:access_token] = access_token.token
      session[:refresh_token] = access_token.refresh_token
    end

    def refresh_access_token!
      save_access_token!(access_token.refresh!)

      yield if block_given?
    rescue ::OAuth2::Error
      nil
    end

    private

    def fetch_user(&block)
      return unless session[:access_token]

      RailsSso::FetchUser.new(access_token).call(&block)
    rescue ::OAuth2::Error
      refresh_access_token! do
        RailsSso::FetchUser.new(access_token).call(&block)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails_sso-0.2.0 lib/rails_sso/helpers.rb