Создание пользовательского модуля Гостевая книга для Alchemy CMS
Я пытаюсь создать модуль гостевой книги на сайте Rails, используя платформу Alchemy CMS. Похоже, что документации по сборке модулей с помощью Alchemy не так много, поэтому я просто ухожу с этой страницы.
Я создал два контроллера, один из которых администраторы будут использовать под названием guestbook_controller.rb, и поместил их в app / controllers / admin
module Admin
class GuestbookController < Alchemy::Admin::ResourcesController
def index
"index"
end
end
end
и еще один для гостя для доступа в app / controllers / guestbook_controller.rb
class GuestbookController < ActionController::Base
def index
"index"
end
end
Я предполагаю, что сообщения Гостевой книги будут отображаться на одной из страниц уже в Алхимии, а также форма будет отображаться на этой странице.
Модель гостевой книги выглядит так:
class GuestbookEntry < ActiveRecord::Base
attr_accessible :location, :message, :name
end
Мой файл маршрутов выглядит следующим образом:
resources :guestbook
namespace :admin do
resources :guestbook
end
mount Alchemy::Engine => '/'
и у меня есть файл с именем authorization_rules.rb в конфигурации, который выглядит так: авторизация сделать
role :admin do
has_permission_on :guestbook, :to => [:manage]
end
end
Первая проблема, с которой я сталкиваюсь, заключается в том, что при переходе к маршруту / admin / guestbook выдается ошибка "Вы не авторизованы", но файл правил авторизации должен вызываться моим инициализатором, так почему я получаю эту ошибку?
# Registering guestbook module in Alchemy CMS
Alchemy::Modules.register_module(YAML.load_file(File.join(File.dirname(__FILE__), '../..', 'config/guestbook_module.yml')))
# Loading authorization rules and register them to auth engine instance
Alchemy::AuthEngine.get_instance.load(File.join(File.dirname(__FILE__), '../..', 'config/authorization_rules.rb'))
1 ответ
Проблема с авторизацией проста. Вам просто нужно написать:
has_permission_on :admin_guestbook, :to => [:manage]
Еще одна вещь, которую я заметил: ваш интерфейс GuestbookController должен наследоваться от Alchemy::BaseController.
И вы должны убедиться, что Алхимия не кэширует вашу страницу, на которой вы хотите отобразить записи в гостевой книге. Вы можете сделать это с помощью cache: false
опция в page_layouts.yml для вашего макета страницы.