Devise + OmniAuth + Refinery CMS

时间:2012-09-25 11:18:28

标签: ruby-on-rails devise ruby-on-rails-3.2 omniauth refinerycms

我们使用Devise + OmniAuth作为身份验证机制,通过facebook,twitter和openid对用户进行身份验证。现在我们需要将Refinery CMS集成到我们现有的应用程序中。

要求: 应用程序的主页具有一些静态内容的注册/登录按钮。登录时,用户可以访问受限区域。我们希望在受限页面上添加访问Refinery CMS的链接。它不应再要求任何凭证。

我们按照以下链接整合了Refinery CMS:

  1. http://refinerycms.com/guides/with-an-existing-rails-app
  2. http://refinerycms.com/guides/with-an-existing-rails-31-devise-app
  3. 现在启动服务器后,当我们点击http://localhost:3000时,它会重定向到http://localhost:3000/refinery/users/register。用户应该能够看到包含公共内容的主页。用户只有在用户使用任何支持的服务进行身份验证后才能访问炼油厂CMS(通过/ help)。

    这是 config / routes.rb

    的快照
    mount Refinery::Core::Engine, :at => '/'
    ...
    devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks", registrations: "registrations" }
    ....
    root :to => "home#index"
    

    配置/ application.rb中

    config.autoload_paths += Dir["#{config.root}/lib/**/"] # to load files from lib directory, including subfolders
    
        config.before_initialize do
          require 'refinery_patch'
          require 'restrict_refinery_to_refinery_users'
        end
    
        include Refinery::Engine
        after_inclusion do
          [ApplicationController, ApplicationHelper].each do |c|
            c.send :include, ::RefineryPatch
          end
    
          ::Refinery::AdminController.send :include, ::RestrictRefineryToRefineryUsers
          ::Refinery::AdminController.send :before_filter, :restrict_refinery_to_refinery_users
        end
    

    我们是初学者。任何帮助都会很明显。