Создание пользовательского модуля Гостевая книга для 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 для вашего макета страницы.

Другие вопросы по тегам