# To change this template, choose Tools | Templates
# and open the template in the editor.

module AuthenticationMethods
  def current_user_session
    return @current_user_session if defined?(@current_user_session)
    @current_user_session = UserSession.find
  end

  def current_user
    return @current_user if defined?(@current_user)
    @current_user = current_user_session && current_user_session.user
  end

  def login_required
    session[:original_fullpath]=request.original_fullpath
    if current_user_session && current_user_session.stale?
      redirect_root_or_default(t'flash.inactivity_logout')
      return false
    else
      unless current_user && !session[:locale].blank?
        redirect_root_or_default(t'flash.login_required')
        return false
      end
    end
  end

  def adm_login_required
    unless current_user.is_provider_admin? || current_user.is_superadmin?
      redirect_root_or_default(I18n.t'flash.alert_cancan')
      return false
    end
  end

  def superadmin_login_required
    unless current_user.is_superadmin?
      redirect_root_or_default(I18n.t'flash.alert_cancan')
      return false
    end
  end

  def login_not_required
    if current_user
      flash[:notice] = "You must be logged out to access this page"
      return false
    end
  end

  def logged_in?
    # TODO : Damien seems used in resful_ACl for logging
    !!current_user
  end

  def store_previous_location
    session[:return_to] = request.env["HTTP_REFERER"]
  end

  def store_location
    session[:return_to] = request.env['REQUEST_URI']
  end

  def redirect_root_or_default(message='')
    flash[:alert] = message
    flash.keep(:alert)
    if session[:pixtech]
      pixtech_url_out = Pixways.get_pixtech_param_value(session[:pixtech],'url_out')
      redirect_url = pixtech_url_out.blank? ?  root_url : pixtech_url_out
    else
      redirect_url = session[:return_to].blank? ?  root_url : session[:return_to]
    end
    if request.xhr? #remote/js call
      render js: "window.location.replace('#{redirect_url}');", status: 511
      # render "shared/redirect_to_root", status: 511
    else
      redirect_to redirect_url
    end
    session[:return_to] = nil
  end

  def logout_keeping_session!
    # TODO : Damien seems used only in new user registration and outdated
    @current_user = false
    session[:user_id] = nil
  end

  def check_session
    if session.nil?
      return false
    else
      if session[:provider_word].nil? || session[:creator_word].nil? || session[:pixtech].nil?
        return false
      else
        return true
      end
    end
  end

end
