Noosfero/noosfero

View on GitHub
plugins/fb_app/controllers/myprofile/fb_app_plugin_myprofile_controller.rb

Summary

Maintainability
A
45 mins
Test Coverage
class FbAppPluginMyprofileController < OpenGraphPlugin::MyprofileController
  no_design_blocks

  before_action :load_provider
  before_action :load_auth

  def index
    if params[:tabs_added]
      @page_tabs = FbAppPlugin::PageTab.create_from_tabs_added params[:tabs_added], params[:page_tab]
      @page_tab = @page_tabs.first
      redirect_to @page_tab.facebook_url
    end
  end

  def show_login
    @status = params[:auth].delete :status
    @logged_auth = FbAppPlugin::Auth.new params[:auth]
    @logged_auth.fetch_user
    if @auth.connected?
      render partial: "identity", locals: { auth: @logged_auth }
    else
      render nothing: true
    end
  end

  def save_auth
    @status = params[:auth].delete :status rescue FbAppPlugin::Auth::Status::Unknown
    if @status == FbAppPlugin::Auth::Status::Connected
      @auth.attributes = params[:auth]
      @auth.save! if @auth.changed?
    else
      @auth.destroy if @auth && @auth.persisted?
      @auth = new_auth
    end

    render partial: "settings"
  end

  protected

    def load_provider
      @provider = FbAppPlugin.oauth_provider_for environment
    end

    def load_auth
      @auth = FbAppPlugin::Auth.where(profile_id: profile.id, provider_id: @provider.id).first
      @auth ||= new_auth
    end

    def new_auth
      FbAppPlugin::Auth.new profile: profile, provider: @provider
    end

    def context
      :fb_app
    end
end