CartoDB/cartodb20

View on GitHub
lib/carto/authentication_manager.rb

Summary

Maintainability
A
25 mins
Test Coverage
module Carto
  class AuthenticationManager

    def self.validate_session(warden_context, request, user)
      return true if session_security_token_valid?(warden_context, user)

      request.reset_session
      false
    end

    def self.session_security_token_valid?(warden_context, user)
      session = warden_context.session(user.username)

      return false unless session.key?(:sec_token)
      return true if session[:sec_token] == user.security_token

      raise Carto::ExpiredSessionError.new
    rescue Warden::NotAuthenticated
      false
    end
    private_class_method :session_security_token_valid?

  end
end