From: <fg...@us...> - 2011-06-23 10:46:15
|
Revision: 3553 http://openutils.svn.sourceforge.net/openutils/?rev=3553&view=rev Author: fgiust Date: 2011-06-23 10:46:09 +0000 (Thu, 23 Jun 2011) Log Message: ----------- MGNLUTILS-30 new EL functions for reading user properties Modified Paths: -------------- trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.java trunk/openutils-mgnlutils/src/main/resources/META-INF/tld/mgnlutils.tld Modified: trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.java =================================================================== --- trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.java 2011-06-23 10:29:24 UTC (rev 3552) +++ trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.java 2011-06-23 10:46:09 UTC (rev 3553) @@ -29,24 +29,31 @@ import info.magnolia.cms.i18n.I18nContentSupportFactory; import info.magnolia.cms.i18n.I18nContentWrapper; import info.magnolia.cms.i18n.MessagesManager; +import info.magnolia.cms.security.User; +import info.magnolia.cms.security.auth.Entity; import info.magnolia.cms.util.NodeMapWrapper; import info.magnolia.context.MgnlContext; import info.magnolia.context.WebContext; +import info.magnolia.jaas.principal.EntityImpl; import info.magnolia.link.LinkException; import info.magnolia.link.LinkUtil; import java.io.UnsupportedEncodingException; +import java.lang.reflect.Field; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Collection; import java.util.Enumeration; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import javax.jcr.ItemNotFoundException; import javax.jcr.RepositoryException; +import javax.security.auth.Subject; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.ArrayUtils; @@ -870,4 +877,62 @@ return node; } + + /** + * Get a user property calling MgnlContext.getUser().getProperty(property) + * @param property property name + * @return + */ + public static Object userPropertyCurrent(String property) + { + return MgnlContext.getUser().getProperty(property); + } + + /** + * Get a user property calling getProperty(property) on the given User object. + * @param user info.magnolia.cms.security.User instance + * @param property property name + * @return + */ + public static Object userProperty(User user, String property) + { + if (user == null) + { + return null; + } + return user.getProperty(property); + } + + /** + * Returns a Map with all the properties of the current user, taken from the current jaas Principal (note: this uses + * info.magnolia.jaas.principal.EntityImpl internals) + * @return + */ + @SuppressWarnings("unchecked") + public static Map<String, Object> userProperties() + { + Subject subject = MgnlContext.getUser().getSubject(); + + Set<Entity> principalDetails = subject.getPrincipals(Entity.class); + Iterator<Entity> entityIterator = principalDetails.iterator(); + Entity userDetails = entityIterator.next(); + + if (userDetails instanceof EntityImpl) + { + try + { + Field properties = userDetails.getClass().getDeclaredField("properties"); + properties.setAccessible(true); + Object value = properties.get(userDetails); + return (Map<String, Object>) value; + } + catch (Exception e) + { + log.error(e.getMessage(), e); + } + } + + return null; + } + } Modified: trunk/openutils-mgnlutils/src/main/resources/META-INF/tld/mgnlutils.tld =================================================================== --- trunk/openutils-mgnlutils/src/main/resources/META-INF/tld/mgnlutils.tld 2011-06-23 10:29:24 UTC (rev 3552) +++ trunk/openutils-mgnlutils/src/main/resources/META-INF/tld/mgnlutils.tld 2011-06-23 10:46:09 UTC (rev 3553) @@ -307,4 +307,25 @@ <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> <function-signature>info.magnolia.cms.util.NodeMapWrapper node(java.lang.Object, java.lang.String)</function-signature> </function> + <function> + <description>Get a user property calling MgnlContext.getUser().getProperty(propertyname)</description> + <name>userPropertyCurrent</name> + <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> + <function-signature>java.lang.String userPropertyCurrent(java.lang.String)</function-signature> + </function> + <function> + <description>Get a user property calling getProperty(property) on the given User object. Params: instance of info.magnolia.cms.security.User, property key</description> + <name>userProperty</name> + <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> + <function-signature>java.lang.String userProperty(info.magnolia.cms.security.User, java.lang.String)</function-signature> + </function> + <function> + <description>Returns a Map with all the properties of the current user, taken from the current jaas Principal (note: this uses info.magnolia.jaas.principal.EntityImpl internals)</description> + <display-name>userProperties</display-name> + <name>userProperties</name> + <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> + <function-signature>java.util.Map userProperties()</function-signature> + </function> + + <!-- please don't add new funtions without a meaningfull <description> --> </taglib> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |