Hi Ard,

Thanks for the detailed reply - much appreciated! Very helpful.

Rui

On Thu, 2006-11-02 at 19:24 +0100, Ard Schrijvers wrote:
> > 
> > Hi Ard,
> > thanks for your quick reply!
> > I want to remove/replace the link, just like you said in your first
> > paragraph. Using your example suppose we have:
> > 
> > <div>
> > ...
> > <span>...click</span> <a href="link" id="access_module_X">here</a>
> > </div>
> > 
> > The document is passed into the transformer. The transformer checks if
> > current user (checking session attribute) can 
> > "access_module_X", if not,
> > then the resulting transformation should look like:
> > 
> > <div>
> > ...
> > <span>...click </span> <span class="removed_link">here</span>
> > </div>
> > 
> > I'll check linkrewriter and locationmap module. 
> 
> Think you can leave locationmap module for what it is. The linkrewriter might 
> be useful, but you need to implement your own thing that translates it 
> according user auth: So, you start with something like
> 
> <map:transformer logger="sitemap.transformer.linkrewriter" 
>                    name="linkrewriter" pool-grow="2" pool-max="32" 
> pool-min="2" 
>                    
> src="org.apache.cocoon.transformation.LinkRewriterTransformer">
>                 <schemes>rewrite</schemes>
>                 <link-attrs>href src</link-attrs>
> </map:transformer>
> 
> and create an input module with name rewrite, that takes the href attr or src 
> attr, and translates it according the session. You can take the 
> locationMapModule as an example of such an inputModule.
> 
> You also might just extend the linkrewriter, that you don't need an extra 
> input module, so you do the job in the linkrewriter. You could also write the 
> linkrewriter altogether as a new transformer for your needs only. 
> 
> I really think you have to take performance into consideration. Since you 
> depend on user sessions, your caching options are few. Translating each link 
> with a check wether the user is allowed for that link, might be *very* time 
> consuming. Find some way to cache it, or keep something in memory that can 
> handle it. Also, make sure that the rewriteble links have a prefix, that you 
> do not need to test every link (linke links in menu, they are not 
> interesting)...so your links would look for example like : <a 
> href="rewrite:foo/bar.xml">test</a>
> 
> Now, you transformer only needs to test links that have this "rewrite" prefix.
> 
> Anyway, make sure the testing is fast, because you might end up with 
> performance problems.
> 
> Regards Ard
> 
> > 
> > Thanks for any commants.
> > 
> > Rui
> > 
> > 
> > On Thu, 2006-11-02 at 17:31 +0100, Ard Schrijvers wrote:
> > > > 
> > > > Hi all,
> > > > I want my application to remove all the parts of a document 
> > > > that a given
> > > > user shouldn't see.
> > > > 
> > > > Another useful functionality wold be:
> > > > Suppose a web application that has three links (modules). The user
> > > > shouldn't be able to see links that he doesn't have permission to
> > > > follow. So, instead of showing links that we know the user profile
> > > > doesn't allow and show an error after user click, we remove those
> > > > links... having the URL protected also off course :)
> > > > 
> > > > Does anyone knows if there's some work done on this area? Maybe a
> > > > transfomer? Ideas??
> > > 
> > > You want to remove just the link, or the text element all 
> > together..? Like what do you want when the link says: "click 
> > here", and "here" is the link. You remove "here", or just the 
> > link, so you have "click here" without a link (you get the 
> > point, quite confusing)??
> > > 
> > > Anyway, you seem to have some user dependant blocks on your 
> > site, right? In this case you can show a block regarding the 
> > user session, or go ahead with some portal, or how we do it, 
> > use ssi's to fill in some user specific gabs, in other to 
> > maintain caching for the main part.
> > > 
> > > Or, do you mean, that you show a page, having some internal 
> > links, that need to be checked, wether the user has rights to 
> > surf to that page. From a user POV, I suppose you cannot just 
> > remove these links, because it would do strange things in your page. 
> > > 
> > > If you really want to, you could look at the linkrewriter, 
> > in combination with the locationmap module in forrest, and 
> > customize the linkrewriter in a way that it responds 
> > regarding the users session. Thereby, you loose cocoon's 
> > caching capability, and you will run into trouble if it is a 
> > high traffic site.
> > > 
> > > Anyway, if you can elaborate a little more on the exact 
> > demands, I or somebody else might help you choose the best solution.
> > > 
> > > Regards Ard
> > > 
> > > 
> > > > 
> > > > Thanks for any comments.
> > > > Rui
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > 
> > > > 
> > > 
> > > 
> > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > 
> > 
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > 
> > 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to