Sha256: ce9a7a14e128fa7e8386ceb64a3c0f82ab0a6f475901cba53dff2c137ca8db8f

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 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_data ||= fetch_user_data
    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_data
      return unless session[:access_token]

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

Version data entries

1 entries across 1 versions & 1 rubygems

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