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/
-~----------~----~----~----~------~----~------~--~---

Reply via email to