fix #2343 add fe:permission

This commit is contained in:
Shinsuke Sugaya 2019-12-22 17:35:44 +09:00
parent e1dbb424bd
commit 2ac3f68413
56 changed files with 381 additions and 122 deletions

View file

@ -102,8 +102,6 @@ public class Constants extends CoreLibConstants {
public static final String WEB_API_POPULAR_WORD_PROPERTY = "web.api.popularword";
public static final String WEB_DESIGN_EDITOR_PROPERTY = "design.editor";
public static final String APP_VALUE_PROPERTY = "system.properties";
public static final String DEFAULT_LABEL_VALUE_PROPERTY = "label.value";

View file

@ -60,13 +60,10 @@ import org.lastaflute.web.response.HtmlResponse;
public class AdminAction extends FessAdminAction {
// ===================================================================================
// Constant
//
// ===================================================================================
// Attribute
//
@Override
protected String getActionRole() {
return "admin";
}
// ===================================================================================
// Search Execute

View file

@ -72,6 +72,11 @@ public class AdminAccesstokenAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameAccesstoken()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -109,6 +109,11 @@ public class AdminBackupAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameBackup()));
}
@Override
protected String getActionRole() {
return ROLE;
}
@Execute
@Secured({ ROLE, ROLE + VIEW })
public HtmlResponse index() {

View file

@ -75,6 +75,11 @@ public class AdminBadwordAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameBadword()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -59,6 +59,11 @@ public class AdminBoostdocAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameBoostdoc()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -61,6 +61,11 @@ public class AdminCrawlinginfoAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameCrawlinginfo()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -49,6 +49,11 @@ public class AdminDashboardAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameDashboard()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Index
// ==============

View file

@ -77,6 +77,11 @@ public class AdminDataconfigAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameDataconfig()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -37,7 +37,6 @@ import org.codelibs.fess.exception.FessSystemException;
import org.codelibs.fess.util.ComponentUtil;
import org.dbflute.optional.OptionalEntity;
import org.lastaflute.web.Execute;
import org.lastaflute.web.response.ActionResponse;
import org.lastaflute.web.response.HtmlResponse;
import org.lastaflute.web.response.StreamResponse;
import org.lastaflute.web.ruts.process.ActionRuntime;
@ -59,29 +58,18 @@ public class AdminDesignAction extends FessAdminAction {
// ===================================================================================
// Hook
// ======
@Override
public ActionResponse hookBefore(final ActionRuntime runtime) {
checkEditorStatus(runtime);
return super.hookBefore(runtime);
}
private void checkEditorStatus(final ActionRuntime runtime) {
if (!editable()) {
throwValidationError(messages -> messages.addErrorsDesignEditorDisabled(GLOBAL), () -> asListHtml());
}
}
@Override
protected void setupHtmlData(final ActionRuntime runtime) {
super.setupHtmlData(runtime);
runtime.registerData("editable", editable());
runtime.registerData("fileNameItems", loadFileNameItems());
runtime.registerData("jspFileNameItems", loadJspFileNameItems());
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameDesign()));
}
private boolean editable() {
return fessConfig.isWebDesignEditorEnabled();
@Override
protected String getActionRole() {
return ROLE;
}
private List<Pair<String, String>> loadJspFileNameItems() {

View file

@ -49,6 +49,11 @@ public class AdminDictAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameDict()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -69,6 +69,11 @@ public class AdminDictKuromojiAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameDictKuromoji()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -71,6 +71,11 @@ public class AdminDictMappingAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameDictMapping()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -68,6 +68,11 @@ public class AdminDictProtwordsAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameDictProtwords()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -68,6 +68,11 @@ public class AdminDictStemmeroverrideAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameDictStemmeroverride()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -66,6 +66,11 @@ public class AdminDictStopwordsAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameDictStopwords()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -71,6 +71,11 @@ public class AdminDictSynonymAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameDictSynonym()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -59,6 +59,11 @@ public class AdminDuplicatehostAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameDuplicatehost()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -85,6 +85,11 @@ public class AdminElevatewordAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameElevateword()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -54,6 +54,11 @@ public class AdminEsreqAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameEsreq()));
}
@Override
protected String getActionRole() {
return ROLE;
}
@Execute
@Secured({ ROLE, ROLE + VIEW })
public HtmlResponse index() {

View file

@ -54,6 +54,11 @@ public class AdminFailureurlAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameFailureurl()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -70,6 +70,11 @@ public class AdminFileauthAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameFileauth()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -73,6 +73,11 @@ public class AdminFileconfigAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameFileconfig()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -69,6 +69,11 @@ public class AdminGeneralAction extends FessAdminAction {
runtime.registerData("dayItems", getDayItems());
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
//

View file

@ -64,6 +64,11 @@ public class AdminGroupAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameGroup()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -57,6 +57,11 @@ public class AdminJoblogAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameJoblog()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -66,6 +66,11 @@ public class AdminKeymatchAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameKeymatch()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -71,6 +71,11 @@ public class AdminLabeltypeAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameLabeltype()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -56,6 +56,11 @@ public class AdminLogAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameLog()));
}
@Override
protected String getActionRole() {
return ROLE;
}
@Execute
@Secured({ ROLE, ROLE + VIEW })
public HtmlResponse index() {

View file

@ -76,6 +76,11 @@ public class AdminMaintenanceAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameMaintenance()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -60,6 +60,11 @@ public class AdminPathmapAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNamePathmap()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -54,6 +54,11 @@ public class AdminPluginAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNamePlugin()));
}
@Override
protected String getActionRole() {
return ROLE;
}
@Execute
@Secured({ ROLE, ROLE + VIEW })
public HtmlResponse index() {

View file

@ -59,6 +59,11 @@ public class AdminRelatedcontentAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameRelatedcontent()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -66,6 +66,11 @@ public class AdminRelatedqueryAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameRelatedquery()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -69,6 +69,11 @@ public class AdminReqheaderAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameReqheader()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -64,6 +64,11 @@ public class AdminRoleAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameRole()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -66,6 +66,11 @@ public class AdminSchedulerAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameScheduler()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -112,6 +112,11 @@ public class AdminSearchlistAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameSearchlist()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -56,6 +56,11 @@ public class AdminSearchlogAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameSearchlog()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -62,6 +62,11 @@ public class AdminStorageAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameStorage()));
}
@Override
protected String getActionRole() {
return ROLE;
}
@Execute
@Secured({ ROLE, ROLE + VIEW })
public HtmlResponse index() {

View file

@ -49,6 +49,11 @@ public class AdminSuggestAction extends FessAdminAction {
runtime.registerData("queryWordsNum", suggestHelper.getQueryWordsNum());
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Execute
// ========

View file

@ -64,6 +64,11 @@ public class AdminSysteminfoAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameSysteminfo()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Index
// ==============

View file

@ -111,6 +111,11 @@ public class AdminUpgradeAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameUpgrade()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -77,6 +77,11 @@ public class AdminUserAction extends FessAdminAction {
runtime.registerData("ldapAdminEnabled", fessConfig.isLdapAdminEnabled());
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -69,6 +69,11 @@ public class AdminWebauthAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameWebauth()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -77,6 +77,11 @@ public class AdminWebconfigAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameWebconfig()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -80,6 +80,11 @@ public class AdminWizardAction extends FessAdminAction {
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameWizard()));
}
@Override
protected String getActionRole() {
return ROLE;
}
// ===================================================================================
// Search Execute
// ==============

View file

@ -18,6 +18,7 @@ package org.codelibs.fess.app.web.base;
import javax.annotation.Resource;
import javax.servlet.ServletContext;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.exception.UserRoleLoginException;
import org.codelibs.fess.helper.CrawlingConfigHelper;
import org.dbflute.optional.OptionalThing;
@ -49,8 +50,16 @@ public abstract class FessAdminAction extends FessBaseAction {
protected void setupHtmlData(final ActionRuntime runtime) {
super.setupHtmlData(runtime);
systemHelper.setupAdminHtmlData(this, runtime);
final Boolean editable =
getUserBean().map(user -> user.hasRoles(fessConfig.getAuthenticationAdminRolesAsArray()) || user.hasRole(getActionRole()))
.orElse(false);
runtime.registerData("editable", editable);
runtime.registerData("editableClass", editable.booleanValue() ? StringUtil.EMPTY : "disabled");
}
protected abstract String getActionRole();
protected void write(final String path, final byte[] data) {
LdiFileUtil.write(path, data);
}

View file

@ -203,10 +203,6 @@ public interface FessProp {
setSystemProperty(key, Integer.toString(value));
}
default boolean isWebDesignEditorEnabled() {
return getSystemPropertyAsBoolean(Constants.WEB_DESIGN_EDITOR_PROPERTY, true);
}
default boolean isSearchFileProxyEnabled() {
return getSystemPropertyAsBoolean(Constants.SEARCH_FILE_PROXY_PROPERTY, true);
}

View file

@ -50,6 +50,8 @@ import org.apache.logging.log4j.Logger;
import org.apache.pdfbox.util.DateConverter;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.app.web.base.FessAdminAction;
import org.codelibs.fess.app.web.base.login.FessLoginAssist;
import org.codelibs.fess.entity.FacetQueryView;
import org.codelibs.fess.helper.ViewHelper;
import org.codelibs.fess.util.ComponentUtil;
@ -404,4 +406,17 @@ public class FessFunctions {
final Locale locale = LaRequestUtil.getOptionalRequest().map(HttpServletRequest::getLocale).orElse(Locale.ROOT);
return ComponentUtil.getMessageManager().findMessage(locale, key).orElse(defaultValue);
}
public static boolean hasActionRole(final String role) {
final String[] roles;
if (role.endsWith(FessAdminAction.VIEW)) {
roles = new String[] { role, role.substring(0, role.length() - FessAdminAction.VIEW.length()) };
} else {
roles = new String[] { role };
}
final FessLoginAssist loginAssist = ComponentUtil.getComponent(FessLoginAssist.class);
return loginAssist.getSavedUserBean()
.map(user -> user.hasRoles(roles) || user.hasRoles(ComponentUtil.getFessConfig().getAuthenticationAdminRolesAsArray()))
.orElse(false);
}
}

View file

@ -265,4 +265,12 @@
<function-signature>java.lang.String getMessage(java.lang.String, java.lang.String)</function-signature>
<example>${fe:message("labels.foobar", "default value")}</example>
</function>
<function>
<description>Check if user has a permission.</description>
<name>permission</name>
<function-class>org.codelibs.fess.taglib.FessFunctions</function-class>
<function-signature>boolean hasActionRole(java.lang.String)</function-signature>
<example>${fe:permission("admin-dashboard")}</example>
</function>
</taglib>

View file

@ -158,11 +158,11 @@
<!-- /.box-body -->
<div class="box-footer">
<jsp:include page="/WEB-INF/view/common/admin/crud/buttons.jsp"></jsp:include>
<la:link styleClass="btn btn-success"
<c:if test="${editable}"><la:link styleClass="btn btn-success"
href="/admin/scheduler/createnewjob/web_crawling/${f:u(id)}/${fe:base64(name)}">
<em class="fa fa-plus-circle"></em>
<la:message key="labels.web_crawling_button_create_job" />
</la:link>
</la:link></c:if>
</div>
<!-- /.box-footer -->
</div>

View file

@ -5,28 +5,33 @@
<em class="fa fa-arrow-circle-left"></em>
<la:message key="labels.crud_button_back" />
</button>
<c:if test="${editable}">
<button type="submit" class="btn btn-success" name="create"
value="<la:message key="labels.crud_button_create" />">
<em class="fa fa-plus"></em>
<la:message key="labels.crud_button_create" />
</button>
</c:if>
</c:if>
<c:if test="${crudMode == 2}">
<button type="submit" class="btn btn-default" name="edit" value="back">
<em class="fa fa-arrow-circle-left"></em>
<la:message key="labels.crud_button_back" />
</button>
<c:if test="${editable}">
<button type="submit" class="btn btn-warning" name="update"
value="<la:message key="labels.crud_button_update" />">
<em class="fa fa-pencil-alt"></em>
<la:message key="labels.crud_button_update" />
</button>
</c:if>
</c:if>
<c:if test="${crudMode == 4}">
<button type="submit" class="btn btn-default" name="list" value="back">
<em class="fa fa-arrow-circle-left"></em>
<la:message key="labels.crud_button_back" />
</button>
<c:if test="${editable}">
<button type="submit" class="btn btn-warning" name="edit"
value="<la:message key="labels.crud_button_edit" />">
<em class="fa fa-pencil-alt"></em>
@ -71,4 +76,5 @@
</div>
</div>
</div>
</c:if>
</c:if>
</c:if>

View file

@ -19,7 +19,7 @@
<div class="btn-group pull-right">
<c:choose>
<c:when test="${crudMode == null}">
<la:link href="createnew" styleClass="btn btn-success btn-xs">
<la:link href="createnew" styleClass="btn btn-success btn-xs ${f:h(editableClass)}">
<em class="fa fa-plus"></em>
<la:message key="labels.crud_link_create" />
</la:link>
@ -31,4 +31,4 @@
</la:link>
</c:otherwise>
</c:choose>
</div>
</div>

View file

@ -23,9 +23,11 @@
<a href="${installationLink}" target="_olh"><em class="fa fa-exclamation-triangle"></em></a></li>
</c:if>
<li><a href="${contextPath}/"><em class="fa fa-list-alt"></em></a></li>
<c:if test="${fe:permission('admin-scheduler')}">
<li><a
href="${contextPath}/admin/scheduler/details/4/default_crawler"><em
class="fa fa-play-circle"></em></a></li>
</c:if>
<c:if test="${not empty helpLink}">
<li><a href="${helpLink}" target="_olh"><em
class="fa fa-question-circle"></em></a></li>

View file

@ -6,6 +6,7 @@
<section class="sidebar">
<!-- search form -->
<c:if test="${fe:permission('admin-searchlist-view')}">
<form action="<%=request.getContextPath()%>/admin/searchlist/search" method="GET"
class="sidebar-form">
<div class="input-group">
@ -20,18 +21,20 @@
</span>
</div>
</form>
</c:if>
<!-- Sidebar Menu -->
<ul class="sidebar-menu" data-widget="tree">
<li class="header"><la:message key="labels.sidebar.menu" /></li>
<li
<c:if test="${fe:permission('admin-dashboard-view')}"><li
class="<c:if test="${param.menuCategoryType=='dashboard'}">active</c:if>"><la:link
href="/admin/dashboard/">
<em class="fa fa-tachometer-alt"></em>
<span><la:message key="labels.menu_dashboard_config" /></span>
</la:link></li>
</la:link></li></c:if>
<c:if test="${fe:permission('admin-wizard-view') or fe:permission('admin-general-view') or fe:permission('admin-scheduler-view') or fe:permission('admin-design-view') or fe:permission('admin-dict-view') or fe:permission('admin-accesstoken-view') or fe:permission('admin-plugin-view') or fe:permission('admin-storage-view')}">
<li
class="treeview <c:if test="${param.menuCategoryType=='system'}">active</c:if>"><a
href="#"><em class='fa fa-laptop'></em> <span><la:message
@ -39,56 +42,64 @@
class="fa fa-angle-left pull-right"></em></a>
<ul class="treeview-menu">
<c:if test="${fe:permission('admin-wizard-view')}">
<li <c:if test="${param.menuType=='wizard'}">class="active"</c:if>><la:link
href="/admin/wizard/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_wizard" /></span>
</la:link></li>
</la:link></li></c:if>
<c:if test="${fe:permission('admin-general-view')}">
<li <c:if test="${param.menuType=='general'}">class="active"</c:if>><la:link
href="/admin/general/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_crawl_config" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='scheduler'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-scheduler-view')}">
<li <c:if test="${param.menuType=='scheduler'}">class="active"</c:if>><la:link
href="/admin/scheduler/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_scheduler_config" /></span>
</la:link></li>
</la:link></li></c:if>
<c:if test="${fe:permission('admin-design-view')}">
<li <c:if test="${param.menuType=='design'}">class="active"</c:if>><la:link
href="/admin/design/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_design" /></span>
</la:link></li>
</la:link></li></c:if>
<c:if test="${fe:permission('admin-dict-view')}">
<li <c:if test="${param.menuType=='dict'}">class="active"</c:if>><la:link
href="/admin/dict/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_dict" /></span>
</la:link></li>
</la:link></li></c:if>
<c:if test="${fe:permission('admin-accesstoken-view')}">
<li <c:if test="${param.menuType=='accessToken'}">class="active"</c:if>><la:link
href="/admin/accesstoken/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_access_token" /></span>
</la:link></li>
</la:link></li></c:if>
<c:if test="${fe:permission('admin-plugin-view')}">
<li <c:if test="${param.menuType=='plugin'}">class="active"</c:if>><la:link
href="/admin/plugin/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_plugin" /></span>
</la:link></li>
</la:link></li></c:if>
<c:if test="${storageEnabled.booleanValue()}"><li <c:if test="${param.menuType=='storage'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-storage-view') and storageEnabled.booleanValue()}">
<li <c:if test="${param.menuType=='storage'}">class="active"</c:if>><la:link
href="/admin/storage/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_storage" /></span>
</la:link></li></c:if>
</ul></li>
</ul></li></c:if>
<c:if test="${fe:permission('admin-webconfig-view') or fe:permission('admin-fileconfig-view') or fe:permission('admin-dataconfig-view') or fe:permission('admin-labeltype-view') or fe:permission('admin-keymatch-view') or fe:permission('admin-boostdoc-view') or fe:permission('admin-relatedcontent-view') or fe:permission('admin-relatedquery-view') or fe:permission('admin-pathmap-view') or fe:permission('admin-webauth-view') or fe:permission('admin-fileauth-view') or fe:permission('admin-reqheader-view') or fe:permission('admin-duplicatehost-view')}">
<li
class="treeview <c:if test="${param.menuCategoryType=='crawl'}">active</c:if>"><a
href="#"><em class='fa fa-cogs'></em> <span><la:message
@ -96,123 +107,128 @@
class="fa fa-angle-left pull-right"></em></a>
<ul class="treeview-menu">
<li
<c:if test="${param.menuType=='webConfig'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-webconfig-view')}">
<li <c:if test="${param.menuType=='webConfig'}">class="active"</c:if>><la:link
href="/admin/webconfig/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_web" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='fileConfig'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-fileconfig-view')}">
<li <c:if test="${param.menuType=='fileConfig'}">class="active"</c:if>><la:link
href="/admin/fileconfig/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_file_system" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='dataConfig'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-dataconfig-view')}">
<li <c:if test="${param.menuType=='dataConfig'}">class="active"</c:if>><la:link
href="/admin/dataconfig/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_data_store" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='labelType'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-labeltype-view')}">
<li <c:if test="${param.menuType=='labelType'}">class="active"</c:if>><la:link
href="/admin/labeltype/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_label_type" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='keyMatch'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-keymatch-view')}">
<li <c:if test="${param.menuType=='keyMatch'}">class="active"</c:if>><la:link
href="/admin/keymatch/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_key_match" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='boostDocumentRule'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-boostdoc-view')}">
<li <c:if test="${param.menuType=='boostDocumentRule'}">class="active"</c:if>><la:link
href="/admin/boostdoc/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_boost_document_rule" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='relatedContentRule'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-relatedcontent-view')}">
<li <c:if test="${param.menuType=='relatedContentRule'}">class="active"</c:if>><la:link
href="/admin/relatedcontent/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_related_content" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='relatedQueryRule'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-relatedquery-view')}">
<li <c:if test="${param.menuType=='relatedQueryRule'}">class="active"</c:if>><la:link
href="/admin/relatedquery/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_related_query" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='pathMapping'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-pathmap-view')}">
<li <c:if test="${param.menuType=='pathMapping'}">class="active"</c:if>><la:link
href="/admin/pathmap/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_path_mapping" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='webAuthentication'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-webauth-view')}">
<li <c:if test="${param.menuType=='webAuthentication'}">class="active"</c:if>><la:link
href="/admin/webauth/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_web_authentication" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='fileAuthentication'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-fileauth-view')}">
<li <c:if test="${param.menuType=='fileAuthentication'}">class="active"</c:if>><la:link
href="/admin/fileauth/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_file_authentication" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='requestHeader'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-reqheader-view')}">
<li <c:if test="${param.menuType=='requestHeader'}">class="active"</c:if>><la:link
href="/admin/reqheader/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_request_header" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='duplicateHost'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-duplicatehost-view')}">
<li <c:if test="${param.menuType=='duplicateHost'}">class="active"</c:if>><la:link
href="/admin/duplicatehost/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_duplicate_host" /></span>
</la:link></li>
</la:link></li></c:if>
</ul></li>
</ul></li></c:if>
<c:if test="${fe:permission('admin-user-view') or fe:permission('admin-role-view') or fe:permission('admin-group-view')}">
<li
class="treeview <c:if test="${param.menuCategoryType=='user'}">active</c:if>"><a
href="#"><em class='fa fa-user'></em> <span><la:message
key="labels.menu_user" /></span> <em class="fa fa-angle-left pull-right"></em></a>
<ul class="treeview-menu">
<c:if test="${fe:permission('admin-user-view')}">
<li <c:if test="${param.menuType=='user'}">class="active"</c:if>><la:link
href="/admin/user/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_user" /></span>
</la:link></li>
</la:link></li></c:if>
<c:if test="${fe:permission('admin-role-view')}">
<li <c:if test="${param.menuType=='role'}">class="active"</c:if>><la:link
href="/admin/role/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_role" /></span>
</la:link></li>
</la:link></li></c:if>
<c:if test="${fe:permission('admin-group-view')}">
<li <c:if test="${param.menuType=='group'}">class="active"</c:if>><la:link
href="/admin/group/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_group" /></span>
</la:link></li>
</la:link></li></c:if>
</ul></li>
</ul></li></c:if>
<c:if test="${fe:permission('admin-suggest-view') or fe:permission('admin-elevateword-view') or fe:permission('admin-badword-view')}">
<li
class="treeview <c:if test="${param.menuCategoryType=='suggest'}">active</c:if>"><a
href="#"><em class='fa fa-list'></em> <span><la:message
@ -220,28 +236,29 @@
class="fa fa-angle-left pull-right"></em></a>
<ul class="treeview-menu">
<li
<c:if test="${param.menuType=='suggestWord'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-suggest-view')}">
<li <c:if test="${param.menuType=='suggestWord'}">class="active"</c:if>><la:link
href="/admin/suggest/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_suggest_word" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='elevateWord'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-elevateword-view')}">
<li <c:if test="${param.menuType=='elevateWord'}">class="active"</c:if>><la:link
href="/admin/elevateword/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_elevate_word" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='badWord'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-badword-view')}">
<li <c:if test="${param.menuType=='badWord'}">class="active"</c:if>><la:link
href="/admin/badword/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_bad_word" /></span>
</la:link></li>
</la:link></li></c:if>
</ul></li>
</ul></li></c:if>
<c:if test="${fe:permission('admin-systeminfo-view') or fe:permission('admin-searchlog-view') or fe:permission('admin-joblog-view') or fe:permission('admin-crawlinginfo-view') or fe:permission('admin-log-view') or fe:permission('admin-failureurl-view') or fe:permission('admin-searchlist-view') or fe:permission('admin-backup-view') or fe:permission('admin-maintenance-view')}">
<li
class="treeview <c:if test="${param.menuCategoryType=='log'}">active</c:if>"><a
href="#"><em class='fa fa-rss'></em> <span><la:message
@ -249,67 +266,70 @@
class="fa fa-angle-left pull-right"></em></a>
<ul class="treeview-menu">
<li
<c:if test="${param.menuType=='systemInfo'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-systeminfo-view')}">
<li <c:if test="${param.menuType=='systemInfo'}">class="active"</c:if>><la:link
href="/admin/systeminfo/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_system_info" /></span>
</la:link></li>
</la:link></li></c:if>
<c:if test="${fe:permission('admin-searchlog-view')}">
<li <c:if test="${param.menuType=='searchLog'}">class="active"</c:if>><la:link
href="/admin/searchlog/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_searchLog" /></span>
</la:link></li>
</la:link></li></c:if>
<c:if test="${fe:permission('admin-joblog-view')}">
<li <c:if test="${param.menuType=='jobLog'}">class="active"</c:if>><la:link
href="/admin/joblog/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_jobLog" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='crawlingInfo'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-crawlinginfo-view')}">
<li <c:if test="${param.menuType=='crawlingInfo'}">class="active"</c:if>><la:link
href="/admin/crawlinginfo/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_crawling_info" /></span>
</la:link></li>
</la:link></li></c:if>
<c:if test="${fe:permission('admin-log-view')}">
<li <c:if test="${param.menuType=='log'}">class="active"</c:if>><la:link
href="/admin/log/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_log" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='failureUrl'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-failureurl-view')}">
<li <c:if test="${param.menuType=='failureUrl'}">class="active"</c:if>><la:link
href="/admin/failureurl/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_failure_url" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='searchList'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-searchlist-view')}">
<li <c:if test="${param.menuType=='searchList'}">class="active"</c:if>><la:link
href="/admin/searchlist/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_search_list" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='backup'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-backup-view')}">
<li <c:if test="${param.menuType=='backup'}">class="active"</c:if>><la:link
href="/admin/backup/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_backup" /></span>
</la:link></li>
</la:link></li></c:if>
<li
<c:if test="${param.menuType=='maintenance'}">class="active"</c:if>><la:link
<c:if test="${fe:permission('admin-maintenance-view')}">
<li <c:if test="${param.menuType=='maintenance'}">class="active"</c:if>><la:link
href="/admin/maintenance/">
<em class='fa fa-genderless'></em>
<span><la:message key="labels.menu_maintenance" /></span>
</la:link></li>
</la:link></li></c:if>
</ul></li>
</ul></li></c:if>
<c:if test="${fe:fileExists('/WEB-INF/view/common/admin/sidebar_extra.jsp')}">
<c:import url="/WEB-INF/view/common/admin/sidebar_extra.jsp" />
</c:if>