Pregunta

Estoy intentando crear un módulo de libro de visitas dentro de un sitio Rails utilizando el marco Alchemy CMS.No parece haber mucha documentación para la creación de módulos con Alchemy, así que simplemente voy a empezar esta página.

Creé dos controladores, uno que usarán los administradores llamado guestbook_controller.rb y lo coloqué en app/controllers/admin.

module Admin
  class GuestbookController < Alchemy::Admin::ResourcesController
    def index
      "index"
    end
  end
end

y otro para que los invitados accedan en app/controllers/guestbook_controller.rb

class GuestbookController < ActionController::Base
  def index
    "index"
  end
end

Mi intención es que las publicaciones del Libro de visitas se muestren en una de las páginas que ya están dentro de Alchemy y también se mostrará un formulario en esta página.

El modelo del libro de visitas se ve así:

class GuestbookEntry < ActiveRecord::Base
  attr_accessible :location, :message, :name
end

Mi archivo de rutas se parece al siguiente:

resources :guestbook

namespace :admin do
  resources :guestbook
end

mount Alchemy::Engine => '/'

y tengo un archivo llamado Authorization_rules.rb en la configuración que se parece a:autorización hacer

  role :admin do
    has_permission_on :guestbook, :to => [:manage]
  end

end

El primer problema que encuentro es que al ir a la ruta /admin/guestbook me aparece el error "No estás autorizado", pero mi inicializador debería llamar al archivo de reglas de autorización, entonces, ¿por qué recibo este error?

# 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'))
¿Fue útil?

Solución

El problema con la autorización es fácil.Sólo necesitas escribir:

has_permission_on :admin_guestbook, :to => [:manage]

Otra cosa que noté:Su GuestbookController frontal debe heredar de Alchemy::BaseController.

Y debe asegurarse de que Alchemy no almacene en caché la página en la que desea representar las entradas del libro de visitas.Puedes hacer esto usando cache: false opción en page_layouts.yml para el diseño de su página.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top