Ignore:
Timestamp:
Jan 28, 2011, 12:30:39 PM (8 years ago)
Author:
robert@…
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/conf/BaseFilters.groovy

    r6 r9  
    1515 */
    1616import grails.converters.*
     17import javax.servlet.http.HttpServletResponse
    1718import org.codehaus.groovy.grails.commons.ConfigurationHolder
    1819
     
    3637                                        return false
    3738                                }
     39
    3840                               
     41                                // We are handling the Rest controller as a special case. The rest calls are made
     42                                // outside of the users browser session, so it should always contain a session token.
     43                                // Moreover, it should never redirect the user, but instead send a 403 error
     44                                if( controllerName == 'rest' ) {
     45                                        if (!params.sessionToken && !session.sessionToken ){
     46                                                response.setStatus( HttpServletResponse.SC_BAD_REQUEST, "No sessiontoken given" );
     47                                                render "No sessiontoken given"
     48                                                return false
     49                                        }
     50                                       
     51                                        if( params.sessionToken )
     52                                                session.sessionToken = params.sessionToken
     53                                               
     54                                        try {
     55                                                def user = gscfService.getUser( session.sessionToken );
     56                                               
     57                                                if( user ) {
     58                                                        session.user = User.findByIdentifierAndUsername( user.id, user.username );
     59                                                        if( !session.user) {
     60                                                                session.user = new User( identifier: user.id, username: user.username ).save( flush: true );
     61                                                        }
     62                                                } else {
     63                                                        response.setStatus( HttpServletResponse.SC_UNAUTHORIZED, "No user logged in" );
     64                                                        render "No user logged in"
     65                                                        return false;
     66                                                }
     67                                        } catch( Exception e ) {
     68                                                log.error( "Unable to fetch user from GSCF", e );
     69                                                response.setStatus( HttpServletResponse.SC_BAD_REQUEST, "Unable to fetch user from GSCF" );
     70                                                render "Unable to fetch user from GSCF"
     71                                                return false;
     72                                        }
     73                                       
     74                                        return true;
     75                                }
     76                                                               
    3977                                // enable to inject a session from the outside...
    4078                                if (params.sessionToken){
Note: See TracChangeset for help on using the changeset viewer.