From: <tri...@us...> - 2008-04-23 16:29:43
|
Revision: 469 http://equanda.svn.sourceforge.net/equanda/?rev=469&view=rev Author: triathlon98 Date: 2008-04-23 09:29:39 -0700 (Wed, 23 Apr 2008) Log Message: ----------- EQ-62 more archetype fixes Modified Paths: -------------- trunk/equanda-generate/src/main/velocity/login/LoginCache.java.vm trunk/equanda-maven-plugin/src/main/resources/archetype-resources/gui/src/main/java/services/AppModule.java trunk/equanda-maven-plugin/src/main/resources/archetype-resources/src/main/dm/dm.ini Modified: trunk/equanda-generate/src/main/velocity/login/LoginCache.java.vm =================================================================== --- trunk/equanda-generate/src/main/velocity/login/LoginCache.java.vm 2008-04-23 15:11:22 UTC (rev 468) +++ trunk/equanda-generate/src/main/velocity/login/LoginCache.java.vm 2008-04-23 16:29:39 UTC (rev 469) @@ -138,6 +138,7 @@ throws EquandaPersistenceException { LoginInfo info = getUser( user ); + if ( null == info ) info = setUser( user, null ); if ( null == info.getAuthAndConfig() ) { AuthAndConfigProvider acpUser = userAuthCache.get( AUTH_USER_PREFIX + user ); Modified: trunk/equanda-maven-plugin/src/main/resources/archetype-resources/gui/src/main/java/services/AppModule.java =================================================================== --- trunk/equanda-maven-plugin/src/main/resources/archetype-resources/gui/src/main/java/services/AppModule.java 2008-04-23 15:11:22 UTC (rev 468) +++ trunk/equanda-maven-plugin/src/main/resources/archetype-resources/gui/src/main/java/services/AppModule.java 2008-04-23 16:29:39 UTC (rev 469) @@ -24,6 +24,9 @@ package ${srcPackage}; +import ${packageName}.dm.client.EquandaUserConstants; +import ${packageName}.dm.client.EquandaUser; +import ${packageName}.login.LoginCache; import javassist.runtime.Desc; import org.apache.tapestry.Translator; import org.apache.tapestry.ioc.Configuration; @@ -33,14 +36,21 @@ import org.apache.tapestry.ioc.annotations.InjectService; import org.apache.tapestry.ioc.services.Coercion; import org.apache.tapestry.ioc.services.CoercionTuple; -import org.apache.tapestry.services.Request; -import org.apache.tapestry.services.RequestFilter; -import org.apache.tapestry.services.RequestHandler; -import org.apache.tapestry.services.Response; +import org.apache.tapestry.services.*; import org.slf4j.Logger; +import org.equanda.t5gui.services.LoginInfoService; +import org.equanda.t5gui.services.T5guiModule; +import org.equanda.client.LoginInfo; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; import java.io.IOException; +import java.util.Locale; +import java.security.Principal; + +import java.io.IOException; + /** * This module is automatically included as part of the Tapestry IoC Registry, it's a good place to configure and extend * Tapestry, or to place your own service definitions. @@ -130,20 +140,86 @@ } /** + * User management filter, the login method on the user should be called when the user logs in. If the user does not + * yet exist (which is possible when logging in using some SSO solution, then the user should be created). + * + * @param log log + * @param requestGlobals to have access to servlet request + * @param persistentLocale locale to allow chaning to user preference + * @return request filter + */ + public RequestFilter buildLoginFilter( final Logger log, + final RequestGlobals requestGlobals, + final PersistentLocale persistentLocale, + final LoginInfoService loginInfoService ) + { + return new RequestFilter() + { + public boolean service( Request request, Response response, RequestHandler handler ) + throws IOException + { + // assure we have a user object, make it available on the session, login and set locale + + HttpServletRequest servletRequest = requestGlobals.getHTTPServletRequest(); + HttpSession session = servletRequest.getSession(); + LoginInfo loginInfo = (LoginInfo) session.getAttribute( T5guiModule.SESSION_USER ); + if ( null == loginInfo ) + { + try + { + LoginCache loginCache = LoginCache.getLoginCache(); + Principal principal = requestGlobals.getHTTPServletRequest().getUserPrincipal(); + String userName = principal == null ? "anonymous" : principal.getName(); + loginInfo = loginCache.getWithAuth( userName ); + if ( loginInfo == null ) + { + EquandaUser user = EquandaUser.equandaCreate( EquandaUserConstants.TYPE_User ); + user.setUserName( userName ); + user.equandaUpdate(); + loginInfo = loginCache.getWithAuth( userName ); + } + session.setAttribute( T5guiModule.SESSION_USER, loginInfo ); + if ( null != loginInfo.getUser() ) + { + ( (EquandaUser) loginInfo.getUser() ).login(); + if ( loginInfo.getUser().getLanguage() != null ) + { + persistentLocale.set( new Locale( loginInfo.getUser().getLanguage() ) ); + } + } + } + catch ( Exception ex ) + { + log.error( "problem while logging in user", ex ); + } + } + loginInfoService.setLoginInfo( loginInfo ); + + // The reponsibility of a filter is to invoke the corresponding method + // in the handler. When you chain multiple filters together, each filter + // received a handler that is a bridge to the next filter. + return handler.service( request, response ); + } + }; + } + + /** * This is a contribution to the RequestHandler service configuration. This is how we extend Tapestry using the * timing filter. A common use for this kind of filter is transaction management or security. * * @param configuration configuration to add to - * @param filter filter info + * @param timingFilter filter info + * @param loginFilter filter info */ public void contributeRequestHandler( OrderedConfiguration<RequestFilter> configuration, - @InjectService( "TimingFilter" ) - RequestFilter filter ) + @InjectService( "TimingFilter" )RequestFilter timingFilter, + @InjectService( "LoginFilter" )RequestFilter loginFilter ) { // Each contribution to an ordered configuration has a name, When necessary, you may // set constraints to precisely control the invocation order of the contributed filter // within the pipeline. - configuration.add( "Timing", filter ); + configuration.add( "Timing", timingFilter ); + configuration.add( "Login", loginFilter ); } } Modified: trunk/equanda-maven-plugin/src/main/resources/archetype-resources/src/main/dm/dm.ini =================================================================== --- trunk/equanda-maven-plugin/src/main/resources/archetype-resources/src/main/dm/dm.ini 2008-04-23 15:11:22 UTC (rev 468) +++ trunk/equanda-maven-plugin/src/main/resources/archetype-resources/src/main/dm/dm.ini 2008-04-23 16:29:39 UTC (rev 469) @@ -6,6 +6,7 @@ [t5gui] package=${basePackage}.gui +keyvalue1=t5gui/mytemplates/templates.properties [ddltool] package=${basePackage}.ddltool This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |