Yes, I did go through AppBooster, MachBlog and Dashboard. They were very helpful as starting point. But, I wanted to combine some of the idea's and put together a structure that will take care of some security concern and setup a typical back-end / front-end setup that will scale nicely.
On Mon, Sep 14, 2009 at 8:41 PM, Peter J. Farrell <[email protected]> wrote: > Cool, pass it along when you can. Have you checked out AppBooster for > Mach-II as a starting point? > > .Peter > > Sumit Verma said the following on 09/14/2009 06:24 PM: > > Yes, please feel free to use the content here for the wiki. > So basically, to set a global plugin like web app firewall that needs to > run first, when runParent is set to "none" in module, I would create a place > holder plugin in the module config. Then, in the base config, during module > declaration, "replace/inject" the place holder with a base plugin. > > runOnChild would have been easier, but from your answer I understand it > won't work as plugins run in the order they are defined. > > I'm new to Mach-II and trying to get my head around the whole project > setup and structure. I'm working on creating a sample app with basic setup > of a back-end (admin) and front-end. I will e-mail you that in few days for > review and if appropriate you can use that for wiki as well. > > I have another question about a different issue, but I will send a new > message so it's easier to track. > > > On Mon, Sep 14, 2009 at 1:22 PM, Peter J. Farrell <[email protected]>wrote: > >> Answers inline below. Would you mind if I used your question and sample >> use case for entry on the wiki? >> >> Sumit Verma said the following on 09/12/2009 11:12 PM: >> >> Hi Peter, >> >> Is there a way to set runParent attribute to individual plugin? >> >> No, plugins are a cross-cutting concern and it would be imprudent (and >> really messy) to allow some plugins to run in certain circumstances and not >> in others. However, there is a solution to the use case you describe. >> >> Here is a simple use case: >> >> • A web application firewall set up as a base plugin should by default >> process each request, even inside modules. >> >> • A session handling plugin should only run on the base application (front >> end). >> >> • An access check / security plugin should run only inside module (let's >> say when admin is set up as a module). >> >> So, in this case if we set runParent to none inside the admin module, it >> will disable session handling (good), but it will also disable web app >> firewall (bad). >> >> I know we can always run the web app firewall in Application.cfc and it >> will run on each request, but I'm sure there will be other cases where we >> would like to use the plugin. >> >> I think it might be good to have an attribute called >> runOnChild="before|after|none|always" that can be set on individual plugin. >> >> >> First, there is a known defect right now that stopping the solution I >> will outline below from working: >> >> http://greatbiztoolsllc.trac.cvsdude.com/mach-ii/ticket/194 >> >> This will be fixed in Mach-II 1.8 soon (it affects 1.5, 1.6.0 and 1.6.1). >> >> Basically, you will set the runParent="none" and pull in the plugin you >> want using the overrideAction and/or mapping attribute. These attributes >> are documented in the XML Configuration File reference entry on the wiki. >> >> Snip in module: >> <plugins runParent="none"> >> <plugin name="security" type="MachII.plugins.SimplePlugin /> >> ... other plugins... >> </plugins> >> >> In parent using override XML when defining the module: >> <module name="foo" file="./path/to/mach-ii_foo.xml"> >> <mach-ii> >> <plugins> >> <plugin name="security" overrideAction="addFromParent"/> >> </plugins> >> </mach-ii> >> </module> >> >> This adds the "security" plugin from the parent into the module with the >> name of "security". Remember that plugins are run in the order they are >> defined, since I want my "security" plugin to be run first -- I added a >> placeholder in the module to replace. Otherwise you could do away with that >> "SimplePlugin" placeholder and the override XML will append the plugin -- >> therefore the security plugin would be the last plugin to run in the >> module. Of course, you still have to have the "security" plugin defined in >> the base application so you can use the overrideAction to add it to the >> module. >> >> If you want to use a plugin with different name in the parent, that is >> fine but you need to use the mapping attribute: >> >> Snip in module: >> <plugins runParent="none"> >> <plugin name="security" type="MachII.plugins.SimplePlugin /> >> ... other plugins... >> </plugins> >> >> In parent using override XML: >> >> <module name="foo" file="./path/to/mach-ii_foo.xml"> >> <mach-ii> >> <plugins> >> <plugin name="security" overrideAction="addFromParent" >> mapping="crazyFooBarName" /> >> </plugins> >> </mach-ii> >> </module> >> >> This pulls in a plugin named "crazyFooBarName" from the parent into the >> module and replaces "security" plugin placeholder. Of course, you still >> have to a plugin named "crazyFooBarName" in the base application (parent). >> >> Again, there is a known ticket right now that stops this from working >> right now and this will be fixed soon. >> >> Best, >> .Peter >> >> >> > > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to Mach-II for CFML list. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/mach-ii-for-coldfusion?hl=en SVN: http://greatbiztoolsllc.svn.cvsdude.com/mach-ii/ Wiki / Documentation / Tickets: http://greatbiztoolsllc.trac.cvsdude.com/mach-ii/ -~----------~----~----~----~------~----~------~--~---
