Package com.jalios.jcms.servlet
Class InitFilter
- java.lang.Object
-
- com.jalios.jcms.servlet.JcmsServletFilter
-
- com.jalios.jcms.servlet.InitFilter
-
- All Implemented Interfaces:
JcmsConstants
,JaliosConstants
,javax.servlet.Filter
public class InitFilter extends JcmsServletFilter implements javax.servlet.Filter, JcmsConstants
- Since:
- jcms-5.5.0
- Author:
- Olivier Dedieu
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.String[]
authorizedServlets
protected static Channel
channel
protected javax.servlet.ServletContext
context
protected static org.apache.log4j.Logger
logger
-
Fields inherited from interface com.jalios.util.JaliosConstants
CRLF, MILLIS_IN_ONE_DAY, MILLIS_IN_ONE_HOUR, MILLIS_IN_ONE_MINUTE, MILLIS_IN_ONE_MONTH, MILLIS_IN_ONE_SECOND, MILLIS_IN_ONE_WEEK, MILLIS_IN_ONE_YEAR
-
Fields inherited from interface com.jalios.jcms.JcmsConstants
ADATE_SEARCH, ADMIN_NOTES_PROP, ADVANCED_TAB, AJAX_MODE_ATTR, ARCHIVES_DIR, ASCII_WIDTH, CATEGORY_TAB, CDATE_SEARCH, CLASS_PROPERTY, COMMON_ALARM, CONTENT_TAB, COOKIE_MAX_AGE, COUNTRY_SPRITE, CS_TYPOLOGY_ROOT_CAT_VID, CTRL_TOPIC_INTERNAL, CTRL_TOPIC_REF, CTRL_TOPIC_VALUE, CTRL_TOPIC_WRITE, CUSTOM_PROP, DATA_DIRECTORY, DEFAULT_PHOTO_PROP, DOCCHOOSER_HEIGHT, DOCCHOOSER_WIDTH, DOCS_DIR, EDATE_SEARCH, EMAIL_REGEXP, ERROR_MSG, FORBIDDEN_FILE_ACCESS, FORBIDDEN_REDIRECT, FORCE_REDIRECT, GLYPH_ICON_PREFIX, ICON_ARCHIVE, ICON_ICON_PREFIX, ICON_LOCK, ICON_LOCK_STRONG, ICON_PREFIX_PROP, ICON_WARN, ICON_WH_BOOK_CLOSED, ICON_WH_BOOK_OPEN, INFORMATION_MSG, IS_IN_FRONT_OFFICE, JALIOS_JUNIT_PROP, JCMS_CADDY, JCMS_MSG_LIST, JCMS_TOASTR_COLLECTION, JSYNC_DOWNLOAD_DIR, JSYNC_SYNC_ALARM, LANG_SPRITE, LOG_FILE, LOG_TOPIC_SECURITY, LOGGER_PROP, LOGGER_XMLPROP, MBR_PHOTO_DIR, MDATE_SEARCH, MONITOR_XML, OP_CREATE, OP_CREATE_STR, OP_DEEP_COPY, OP_DEEP_COPY_STR, OP_DEEP_DELETE, OP_DEEP_DELETE_STR, OP_DELETE, OP_DELETE_STR, OP_MERGE, OP_MERGE_STR, OP_UPDATE, OP_UPDATE_STR, ORGANIZATION_ROOT_GROUP_PROP, PDATE_SEARCH, PHOTO_DIR, PHOTO_ICON, PHOTO_ICON_HEIGHT, PHOTO_ICON_PROP_PREFIX, PHOTO_ICON_WIDTH, PHOTO_LARGE, PHOTO_LARGE_HEIGHT, PHOTO_LARGE_PROP_PREFIX, PHOTO_LARGE_WIDTH, PHOTO_MINI, PHOTO_MINI_HEIGHT, PHOTO_MINI_PROP_PREFIX, PHOTO_MINI_WIDTH, PHOTO_NORMAL, PHOTO_NORMAL_HEIGHT, PHOTO_NORMAL_PROP_PREFIX, PHOTO_NORMAL_WIDTH, PHOTO_SMALL, PHOTO_SMALL_HEIGHT, PHOTO_SMALL_PROP_PREFIX, PHOTO_SMALL_WIDTH, PHOTO_TINY, PHOTO_TINY_HEIGHT, PHOTO_TINY_PROP_PREFIX, PHOTO_TINY_WIDTH, PREVIOUS_TAB, PRINT_VIEW, PRIVATE_FILE_ACCESS, PUBLIC_FILE_ACCESS, RAW_CONTENT_ICON_PREFIX, READ_RIGHT_TAB, SDATE_SEARCH, SEARCHENGINE_ALARM, SECURITY_LOG_FILE, SESSION_AUTHORIZED_FILENAMES_SET, SPRITE_ICON_PREFIX, STATS_REPORT_DIR, STATUS_PROP, STORE_DIR, STORE_XML, SUCCESS_MSG, SVG_ICON_PREFIX, SVGINLINE_ICON_PREFIX, TEMPLATE_TAB, THUMBNAIL_LARGE_HEIGHT, THUMBNAIL_LARGE_WIDTH, THUMBNAIL_SMALL_HEIGHT, THUMBNAIL_SMALL_WIDTH, TTCARD_MEDIA_HEIGHT, TTCARD_MEDIA_WIDTH, TYPES_ICON_ALT_PROP, TYPES_ICON_SUFFIX_PROP, TYPES_ICON_TITLE_PROP, TYPES_PREFIX_PROP, TYPES_THUMB_SUFFIX_PROP, UDATE_SEARCH, UPDATE_RIGHT_TAB, UPLOAD_DIR, UPLOAD_PERMISSION_COUNT_PROP_PREFIX, UPLOAD_PERMISSION_SIZE_PROP_PREFIX, URL_REGEXP, VID_LOGGED_MEMBER, WARNING_MSG, WEBAPP_PROP, WFEXPRESS_ALARM, WFREMINDER_ALARM, WORKFLOW_TAB, WORKFLOW_XML
-
-
Constructor Summary
Constructors Constructor Description InitFilter()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected boolean
authenticate(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
Call the authentication manager to authenticate member.protected boolean
blockSiteAccess(java.lang.String uri, java.lang.String warningMsg, java.lang.String[] authJSP, Member loggedMember, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
protected boolean
checkChannelAvailability(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.FilterChain chain)
Check if the channel is available and redirect to the proper JSP on error.protected static java.lang.String
checkLang(javax.servlet.http.HttpServletRequest request, java.lang.String lang)
Check if the given language is a valid choice for the current request.protected boolean
checkSiteAccess(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
Check basic parameter required by JCMS to allow acces to the site: - Private Site and member not logged - URID Missing - Default Workspace missing - Default Portal missingvoid
destroy()
void
doFilter(javax.servlet.ServletRequest req, javax.servlet.ServletResponse res, javax.servlet.FilterChain chain)
protected void
endRequest(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
static java.lang.String
getUserLang(javax.servlet.http.HttpServletRequest request, Member loggedMember)
Deprecated.usegetUserLocale(HttpServletRequest, Member)
insteadstatic java.util.Locale
getUserLocale(javax.servlet.http.HttpServletRequest request, Member loggedMember)
Retrieve the Locale to use for the current request given the currently loggedMember.static java.time.ZoneId
getUserZoneId(javax.servlet.http.HttpServletRequest request, Member loggedMember)
Retrieve the ZoneId to use for the current request given the currently loggedMember.void
init(javax.servlet.FilterConfig config)
protected void
initLogging(javax.servlet.http.HttpServletRequest request)
Initialize log4j NDC with available value.static void
initMemberRequest(javax.servlet.http.HttpServletRequest request, Member loggedMember, java.lang.String userLang)
Deprecated.static void
initMemberRequest(javax.servlet.http.HttpServletRequest request, Member loggedMember, java.util.Locale userLocale)
Deprecated.static void
initMemberRequest(javax.servlet.http.HttpServletRequest request, Member loggedMember, java.util.Locale userLocale, java.time.ZoneId userZoneId)
Initializes tracking of the given member using JcmsSessionTracker and add request attributes ("loggedMember", "userLang", "userCountry", "userLocale") used in jsp and in JcmsContext.protected void
invalidateSessionIfRequested(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
static void
invalidateSessionOnRequestEnd(javax.servlet.http.HttpServletRequest request)
Invalidate the current session, but only at the end of the request to ensure the J2EE server does not recreates a new one which is left unused if no request occurs afterward.protected boolean
isPublicPath(java.lang.String path)
Check if the specified path is allowed to be accessed without authentication when the site is private.static boolean
isRest(javax.servlet.http.HttpServletRequest request)
protected boolean
isValidJSyncFileAccess(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
Check if the request is a JSync file access.static boolean
sessionInvalidationRequested(javax.servlet.http.HttpServletRequest request)
Check if an invalidation of the current session has been requestedprotected void
storeBrowserInformation(javax.servlet.http.HttpServletRequest request)
Store browser in current HttpSession to be later accessible by JcmsContext and JcmsSessionTracker.protected void
storeThreadRequest(javax.servlet.http.HttpServletRequest request)
Store the current HttpServletRequest in a ThreadLocal later accessible throughChannel.getCurrentServletRequest()
protected void
storeThreadResponse(javax.servlet.http.HttpServletResponse response)
Store the current HttpServletResponse in a ThreadLocal later accessible throughChannel.getCurrentServletResponse()
static void
updateUserLanguage(javax.servlet.http.HttpServletRequest request, java.lang.String language)
Change the language of the specified request using the new specified language-
Methods inherited from class com.jalios.jcms.servlet.JcmsServletFilter
endFilter, initJSONBridge, processFilter
-
-
-
-
Field Detail
-
logger
protected static final org.apache.log4j.Logger logger
-
channel
protected static Channel channel
-
context
protected javax.servlet.ServletContext context
-
authorizedServlets
protected java.lang.String[] authorizedServlets
-
-
Method Detail
-
init
public void init(javax.servlet.FilterConfig config)
- Specified by:
init
in interfacejavax.servlet.Filter
-
destroy
public void destroy()
- Specified by:
destroy
in interfacejavax.servlet.Filter
-
isRest
public static final boolean isRest(javax.servlet.http.HttpServletRequest request)
-
doFilter
public void doFilter(javax.servlet.ServletRequest req, javax.servlet.ServletResponse res, javax.servlet.FilterChain chain) throws java.io.IOException, javax.servlet.ServletException
- Specified by:
doFilter
in interfacejavax.servlet.Filter
- Throws:
java.io.IOException
javax.servlet.ServletException
-
endRequest
protected void endRequest(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
-
invalidateSessionOnRequestEnd
public static void invalidateSessionOnRequestEnd(javax.servlet.http.HttpServletRequest request)
Invalidate the current session, but only at the end of the request to ensure the J2EE server does not recreates a new one which is left unused if no request occurs afterward.- Parameters:
request
- the current HttpServletRequest
-
sessionInvalidationRequested
public static boolean sessionInvalidationRequested(javax.servlet.http.HttpServletRequest request)
Check if an invalidation of the current session has been requested- Parameters:
request
- the current HttpServletRequest- Returns:
- true if the
invalidateSessionOnRequestEnd(HttpServletRequest)
was invoked, false otherwise
-
invalidateSessionIfRequested
protected void invalidateSessionIfRequested(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
-
checkChannelAvailability
protected boolean checkChannelAvailability(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.FilterChain chain) throws javax.servlet.ServletException, java.io.IOException
Check if the channel is available and redirect to the proper JSP on error.- Parameters:
request
- the current HttpServletRequestresponse
- the current HttpServletResponsechain
- the currentFilterChain
- Returns:
- true if a redirect occurred or if the chaining process is being manage by this function, and nothing should be done above.
- Throws:
java.io.IOException
- IOException which can be thrown during treatmentjavax.servlet.ServletException
- ServletException which can be thrown during treatment
-
initLogging
protected void initLogging(javax.servlet.http.HttpServletRequest request)
Initialize log4j NDC with available value. That is unauthenticated user- Parameters:
request
- the currentHttpServletRequest
- See Also:
JcmsUtil.setLog4jNDCMemberInfo(HttpServletRequest, Member)
-
storeThreadRequest
protected void storeThreadRequest(javax.servlet.http.HttpServletRequest request)
Store the current HttpServletRequest in a ThreadLocal later accessible throughChannel.getCurrentServletRequest()
- Parameters:
request
- the current HttpServletRequest
-
storeThreadResponse
protected void storeThreadResponse(javax.servlet.http.HttpServletResponse response)
Store the current HttpServletResponse in a ThreadLocal later accessible throughChannel.getCurrentServletResponse()
- Parameters:
response
- the current HttpServletResponse
-
storeBrowserInformation
protected void storeBrowserInformation(javax.servlet.http.HttpServletRequest request)
Store browser in current HttpSession to be later accessible by JcmsContext and JcmsSessionTracker.- Parameters:
request
- the current HttpServletRequest
-
isValidJSyncFileAccess
protected boolean isValidJSyncFileAccess(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
Check if the request is a JSync file access.- Parameters:
request
- the current HttpServletRequestresponse
- the current HttpServletResponse- Returns:
- true if the current request contained valid JSync information to allow access.
-
authenticate
protected boolean authenticate(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException
Call the authentication manager to authenticate member.- Parameters:
request
- the current HttpServletRequestresponse
- the current HttpServletResponse- Returns:
- true if a redirect occurred, false otherwise.
- Throws:
java.io.IOException
- IOException which can be thrown during treatment
-
initMemberRequest
public static void initMemberRequest(javax.servlet.http.HttpServletRequest request, Member loggedMember, java.lang.String userLang)
Deprecated.Initializes tracking of the given member using JcmsSessionTracker and add request attributes ("loggedMember", "userLang", "userLocale", "userZoneId") used in jsp and in JcmsContext.
This method is called by do InitFilter and should only be called in other servlet if the authentication mecanism could not be integrated in AuthenticationManager, webdav is one of those.- Parameters:
request
- the current HttpServletRequestloggedMember
- the Member currently loggeduserLang
- the user language
-
initMemberRequest
public static void initMemberRequest(javax.servlet.http.HttpServletRequest request, Member loggedMember, java.util.Locale userLocale)
Deprecated.Initializes tracking of the given member using JcmsSessionTracker and add request attributes ("loggedMember", "userLang", "userCountry", "userLocale") used in jsp and in JcmsContext.
This method is called by do InitFilter and should only be called in other servlet if the authentication mecanism could not be integrated in AuthenticationManager, webdav is one of those.- Parameters:
request
- the current HttpServletRequestloggedMember
- the Member currently loggeduserLocale
- the Locale of the user for this request
-
initMemberRequest
public static void initMemberRequest(javax.servlet.http.HttpServletRequest request, Member loggedMember, java.util.Locale userLocale, java.time.ZoneId userZoneId)
Initializes tracking of the given member using JcmsSessionTracker and add request attributes ("loggedMember", "userLang", "userCountry", "userLocale") used in jsp and in JcmsContext.
This method is called by do InitFilter and should only be called in other servlet if the authentication mecanism could not be integrated in AuthenticationManager, webdav is one of those.- Parameters:
request
- the current HttpServletRequestloggedMember
- the Member currently loggeduserLocale
- the Locale of the user for this requestuserZoneId
- the ZoneId of the user for this request- Since:
- jcms-10.0.1 / JCMS-4865
-
updateUserLanguage
public static void updateUserLanguage(javax.servlet.http.HttpServletRequest request, java.lang.String language)
Change the language of the specified request using the new specified language- Parameters:
request
- the current request to changelanguage
- the new language to apply to the request (null to left untouched)
-
getUserLang
public static java.lang.String getUserLang(javax.servlet.http.HttpServletRequest request, Member loggedMember)
Deprecated.usegetUserLocale(HttpServletRequest, Member)
insteadRetrieve the user lang to use for the current request given the currently loggedMember.
It should only be called by InitFilter and other servlet wishing to add other authentication mecanism not possible through AuthenticationManager such as webdav.- Parameters:
request
- the current HttpServletRequestloggedMember
- the Member currently logged- Returns:
- an ISO-639 language code
-
getUserLocale
public static java.util.Locale getUserLocale(javax.servlet.http.HttpServletRequest request, Member loggedMember)
Retrieve the Locale to use for the current request given the currently loggedMember.
It should only be called by InitFilter and other servlet wishing to add other authentication mecanism not possible through AuthenticationManager such as webdav.- Parameters:
request
- the current HttpServletRequestloggedMember
- the Member currently logged- Returns:
- a Locale, never return null
- Since:
- jcms-7.1.0
-
checkLang
protected static java.lang.String checkLang(javax.servlet.http.HttpServletRequest request, java.lang.String lang)
Check if the given language is a valid choice for the current request. If not, return the default channel language.- Parameters:
request
- the current HttpServletRequestlang
- the lang to check- Returns:
- the computed language
-
getUserZoneId
public static java.time.ZoneId getUserZoneId(javax.servlet.http.HttpServletRequest request, Member loggedMember)
Retrieve the ZoneId to use for the current request given the currently loggedMember.
It should only be called by InitFilter and other servlet wishing to add other authentication mecanism not possible through AuthenticationManager such as webdav.- Parameters:
request
- the current HttpServletRequestloggedMember
- the Member currently logged- Returns:
- a ZoneId, never return null
- Since:
- jcms-10.0.1 / JCMS-4865
-
checkSiteAccess
protected boolean checkSiteAccess(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException
Check basic parameter required by JCMS to allow acces to the site: - Private Site and member not logged - URID Missing - Default Workspace missing - Default Portal missing- Parameters:
request
- the current HttpServletRequestresponse
- the current HttpServletResponse- Returns:
- true if a redirect occurred, false otherwise.
- Throws:
java.io.IOException
- IOException which can be thrown during treatment
-
isPublicPath
protected boolean isPublicPath(java.lang.String path)
Check if the specified path is allowed to be accessed without authentication when the site is private.- Parameters:
path
- the resource path- Returns:
- true if the specified path can always be accessed, false if an authentication is required.
-
blockSiteAccess
protected boolean blockSiteAccess(java.lang.String uri, java.lang.String warningMsg, java.lang.String[] authJSP, Member loggedMember, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException
- Throws:
java.io.IOException
-
-