Question

J'essaie de construire un module de livre d'or dans un site de rails à l'aide du cadre Alchemy CMS. Il ne semble pas y avoir beaucoup dans la voie de la documentation pour le bâtiment de module avec alchimie, je viens donc de sortir de cette page .

J'ai créé deux contrôleurs, celui qui admins utilisera appelé Guestbook_Controller.rb et placé ceci sous application / contrôleurs / admin

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

et une autre pour accéder à l'application / contrôleurs / goulotbook_controller.rb

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

Mon intention est que les messages du livre d'or seront affichés sous l'une des pages déjà dans Alchemy et un formulaire sera également affiché sur cette page.

Le modèle de livre d'or regarde ceci:

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

Mon fichier de routes ressemble à ce qui suit:

resources :guestbook

namespace :admin do
  resources :guestbook
end

mount Alchemy::Engine => '/'

et j'ai un fichier appelé autorisation_rules.rb sous Configonde qui ressemble à: Autorisation do

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

end

Le premier problème que je rencontre est que vous allez à la route / administrateur / livre d'or me donne l'erreur "Vous n'êtes pas autorisé", mais le fichier de règles d'autorisation doit être appelé par mon initalizer, alors pourquoi dois-je obtenir cette erreur?

# 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'))

Était-ce utile?

La solution

Le problème de l'autorisation est facile. Vous avez juste besoin d'écrire:

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

Une autre chose que j'ai remarquée: Votre frontière GuestbookController devrait hériter de Alchemy :: BaseController.

Et vous devez vous assurer que votre page que vous souhaitez rendre les entrées du livre d'or ne doit pas être mise en cache d'alchimie.Vous pouvez le faire en utilisant l'option cache: false dans la page_Layouts.yml pour votre mise en page de page.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top