[Yanel-dev] Re: [Yanel-commits] rev 45010 - public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/menu

Michael Wechner michael.wechner at wyona.com
Wed Oct 14 11:58:52 CEST 2009


Guillaume Déflache schrieb:
> michi at wyona.com schrieb:
>> Author: michi
>> Date: 2009-10-14 10:33:33 +0200 (Wed, 14 Oct 2009)
>> New Revision: 45010
>>
>> Modified:
>>    
>> public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/menu/Menu.java 
>>
>> Log:
>> check policies re user and group management in order to 
>> disable/enable links
>>
>> Modified: 
>> public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/menu/Menu.java 
>>
>> ===================================================================
>> --- 
>> public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/menu/Menu.java    
>> 2009-10-14 08:32:53 UTC (rev 45009)
>> +++ 
>> public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/menu/Menu.java    
>> 2009-10-14 08:33:33 UTC (rev 45010)
>> @@ -50,8 +50,20 @@
>>          sb.append("<li><a href=\"?yanel.policy=update\">Edit Access 
>> Policy</a></li>");
>>          sb.append("</ul>");
>>          sb.append("</li>");
>> -        sb.append("<li><a href=\"" + backToRealm + reservedPrefix + 
>> "/admin/list-users.html\">User Management</a></li>");
>> -        sb.append("<li><a href=\"" + backToRealm + reservedPrefix + 
>> "/admin/list-groups.html\">Group Management</a></li>");
>> +
>> +        org.wyona.security.core.api.PolicyManager pm = 
>> resource.getRealm().getPolicyManager();
>> +        if (pm.authorize("/" + reservedPrefix + 
>> "/admin/list-users.html", resource.getEnvironment().getIdentity(), 
>> new org.wyona.security.core.api.Usecase("view"))) {
>> +            sb.append("<li><a href=\"" + backToRealm + 
>> reservedPrefix + "/admin/list-users.html\">User Management</a></li>");
>> +        } else {
>> +            sb.append("<li>User Management</li>");
>> +        }
>> +
>> +        if (pm.authorize("/" + reservedPrefix + 
>> "/admin/list-groups.html", resource.getEnvironment().getIdentity(), 
>> new org.wyona.security.core.api.Usecase("view"))) {
>> +            sb.append("<li><a href=\"" + backToRealm + 
>> reservedPrefix + "/admin/list-groups.html\">Group Management</a></li>");
>> +        } else {
>> +            sb.append("<li>Group Management</li>");
>> +        }
>> +
>>          sb.append("<li><a href=\"?yanel.toolbar=off\">Turn off 
>> toolbar</a></li>");
>>          Identity identity = getIdentity(request, map);
>>          if (identity != null) {
>>
>
> Maybe some helpers could, well, help there, like:
>
> protected final boolean mayBeViewed(String URI) {
>     PolicyManager pm = resource.getRealm().getPolicyManager();
>     return pm.authorize(URI, resource.getEnvironment().getIdentity(), 
> new org.wyona.security.core.api.Usecase("view")));
> }
>
> That could be defined in Yanel's Menu base class.

done, slightly different though. Please note this can rise 
performance/scalability issues and I think before we continue
using this wildly we first need incremental Menus via Ajax
>
>
> Also we should at least try to start a HTML writer library for menu 
> entries (addMenu, addMenuEntry, addSeparator, etc.), as you suggested 
> in 
> http://lists.wyona.org/pipermail/yanel-development/2009-April/003543.html
> (And If we are careful and first use private methods for prototyping 
> it, we can always ditch it later!)

definitely if we find some spare time or reset our priorities ;-)

Thanks

Michi
>
>
> WDYT?



More information about the Yanel-development mailing list