/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.tools; import java.util.Locale; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.View; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.mvc.Controller; import com.enonic.esl.net.URL; import com.enonic.vertical.adminweb.AdminHelper; import com.enonic.cms.core.product.ProductVersion; import com.enonic.cms.core.security.SecurityService; import com.enonic.cms.core.security.user.User; public abstract class AbstractToolController implements Controller { private SecurityService securityService; private ViewResolver viewResolver; private boolean enterpriseFeature = false; protected final void setEnterpriseFeature( final boolean value ) { this.enterpriseFeature = value; } @Override public final ModelAndView handleRequest( final HttpServletRequest req, final HttpServletResponse res ) throws Exception { if ( this.enterpriseFeature && !ProductVersion.isEnterprise() ) { res.sendError( HttpServletResponse.SC_FORBIDDEN, "Enterprise Only Feature" ); return null; } final User user = this.securityService.getLoggedInAdminConsoleUser(); if ( user == null ) { res.sendError( HttpServletResponse.SC_FORBIDDEN ); // redirectToLogin( req, res ); return null; } if ( req.getMethod().equalsIgnoreCase( "GET" ) ) { doGet( req, res ); } else if ( req.getMethod().equalsIgnoreCase( "POST" ) ) { doPost( req, res ); } else { res.sendError( HttpServletResponse.SC_METHOD_NOT_ALLOWED ); } return null; } protected void doGet( final HttpServletRequest req, final HttpServletResponse res ) throws Exception { res.sendError( HttpServletResponse.SC_METHOD_NOT_ALLOWED ); } protected void doPost( final HttpServletRequest req, final HttpServletResponse res ) throws Exception { res.sendError( HttpServletResponse.SC_METHOD_NOT_ALLOWED ); } protected final void redirectToReferrer( final HttpServletRequest req, final HttpServletResponse res ) throws Exception { final URL url = new URL( req.getHeader( "referer" ) ); AdminHelper.redirectToURL( url, res ); } protected final void renderView( final HttpServletRequest req, final HttpServletResponse res, final Map<String, Object> model, final String templateName ) throws Exception { res.setContentType( "text/html; charset=utf-8" ); final View view = this.viewResolver.resolveViewName( templateName, Locale.getDefault() ); view.render( model, req, res ); } protected final String getBaseUrl( final HttpServletRequest req ) { return AdminHelper.getAdminPath( req, true ); } @Autowired public final void setSecurityService( final SecurityService securityService ) { this.securityService = securityService; } @Autowired public final void setViewResolver( final ViewResolver viewResolver ) { this.viewResolver = viewResolver; } }