【发布时间】:2012-09-25 11:18:27
【问题描述】:
我们使用 Devise + OmniAuth 作为身份验证机制,通过 facebook、twitter 和 openid 对用户进行身份验证。现在我们需要将 Refinery CMS 集成到我们现有的应用程序中。
要求: 应用程序的主页具有注册/登录按钮,其中包含一些静态内容。登录后,用户可以访问受限区域。我们想在受限页面上添加访问炼油厂 CMS 的链接。它不应该再次要求任何凭据。
我们按照以下链接集成 Refinery CMS:
- http://refinerycms.com/guides/with-an-existing-rails-app
- http://refinerycms.com/guides/with-an-existing-rails-31-devise-app
现在启动服务器后,当我们点击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"
config/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
我们是初学者。任何帮助都将不胜感激。
【问题讨论】:
标签: ruby-on-rails devise ruby-on-rails-3.2 omniauth refinerycms