Frage

Ich versuche, mithilfe des Alchemy CMS-Frameworks ein Gästebuchmodul innerhalb einer Rails-Site zu erstellen.Es scheint nicht viel Dokumentation für die Modulerstellung mit Alchemy zu geben, also mache ich einfach Schluss diese Seite.

Ich habe zwei Controller erstellt, einen für Administratoren mit dem Namen „guestbook_controller.rb“ und diesen unter „app/controllers/admin“ abgelegt

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

und eine weitere, auf die Gäste unter app/controllers/guestbook_controller.rb zugreifen können

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

Meine Absicht ist, dass Gästebuchbeiträge unter einer der Seiten angezeigt werden, die bereits in Alchemy vorhanden sind, und dass auf dieser Seite auch ein Formular angezeigt wird.

Das Gästebuchmodell sieht so aus:

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

Meine Routendatei sieht wie folgt aus:

resources :guestbook

namespace :admin do
  resources :guestbook
end

mount Alchemy::Engine => '/'

und ich habe eine Datei namens „authorization_rules.rb“ unter „config“, die so aussieht:Autorisierung tun

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

end

Das erste Problem, auf das ich stoße, besteht darin, dass ich beim Aufrufen der Route /admin/guestbook die Fehlermeldung „Sie sind nicht autorisiert“ erhalte, die Datei mit den Autorisierungsregeln jedoch von meinem Initialisierer aufgerufen werden sollte. Warum erhalte ich also diese Fehlermeldung?

# 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'))
War es hilfreich?

Lösung

Das Problem mit der Autorisierung ist einfach.Sie müssen nur schreiben:

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

Noch etwas ist mir aufgefallen:Ihr Frontend GuestbookController sollte von Alchemy::BaseController erben.

Und Sie sollten sicherstellen, dass Ihre Seite, auf der Sie die Gästebucheinträge rendern möchten, nicht von Alchemy zwischengespeichert werden darf.Sie können dies tun, indem Sie verwenden cache: false Option in page_layouts.yml für Ihr Seitenlayout.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top