Création d'un module de livre d'or pour Alchemy CMS
-
13-12-2019 - |
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'))
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.