refactoring for api
This commit is contained in:
parent
38f7262b2e
commit
87a28313e3
6 changed files with 82 additions and 30 deletions
|
@ -26,7 +26,7 @@ import org.codelibs.core.exception.IORuntimeException;
|
|||
import org.lastaflute.web.util.LaRequestUtil;
|
||||
import org.lastaflute.web.util.LaResponseUtil;
|
||||
|
||||
public class BaseApiManager {
|
||||
public abstract class BaseApiManager implements WebApiManager {
|
||||
protected static final String FAVORITES_API = "/favoritesApi";
|
||||
|
||||
protected static final String FAVORITE_API = "/favoriteApi";
|
||||
|
@ -37,12 +37,18 @@ public class BaseApiManager {
|
|||
|
||||
protected static final String SEARCH_API = "/searchApi";
|
||||
|
||||
protected String pathPrefix;
|
||||
|
||||
protected static enum FormatType {
|
||||
SEARCH, LABEL, SUGGEST, HOTSEARCHWORD, FAVORITE, FAVORITES, OTHER, PING;
|
||||
}
|
||||
|
||||
public BaseApiManager() {
|
||||
super();
|
||||
public String getPathPrefix() {
|
||||
return pathPrefix;
|
||||
}
|
||||
|
||||
public void setPathPrefix(final String pathPrefix) {
|
||||
this.pathPrefix = pathPrefix;
|
||||
}
|
||||
|
||||
protected FormatType getFormatType(final String formatType) {
|
||||
|
|
41
src/main/java/org/codelibs/fess/api/es/EsApiManager.java
Normal file
41
src/main/java/org/codelibs/fess/api/es/EsApiManager.java
Normal file
|
@ -0,0 +1,41 @@
|
|||
package org.codelibs.fess.api.es;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.codelibs.fess.api.BaseApiManager;
|
||||
import org.codelibs.fess.app.web.base.login.FessLoginAssist;
|
||||
import org.codelibs.fess.util.ComponentUtil;
|
||||
|
||||
public class EsApiManager extends BaseApiManager {
|
||||
protected String[] acceptedRoles = new String[] { "admin" };
|
||||
|
||||
public EsApiManager() {
|
||||
setPathPrefix("/admin/server");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(HttpServletRequest request) {
|
||||
final String servletPath = request.getServletPath();
|
||||
if (servletPath.startsWith(pathPrefix)) {
|
||||
FessLoginAssist loginAssist = ComponentUtil.getLoginAssist();
|
||||
return loginAssist.getSessionUserBean().map(user -> user.hasRoles(acceptedRoles)).orElseGet(() -> Boolean.FALSE).booleanValue();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void setAcceptedRoles(String[] acceptedRoles) {
|
||||
this.acceptedRoles = acceptedRoles;
|
||||
}
|
||||
|
||||
}
|
|
@ -33,7 +33,6 @@ import org.codelibs.core.CoreLibConstants;
|
|||
import org.codelibs.core.lang.StringUtil;
|
||||
import org.codelibs.fess.Constants;
|
||||
import org.codelibs.fess.api.BaseApiManager;
|
||||
import org.codelibs.fess.api.WebApiManager;
|
||||
import org.codelibs.fess.api.WebApiRequest;
|
||||
import org.codelibs.fess.api.WebApiResponse;
|
||||
import org.codelibs.fess.entity.PingResponse;
|
||||
|
@ -48,11 +47,13 @@ import org.lastaflute.web.util.LaRequestUtil;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class JsonApiManager extends BaseApiManager implements WebApiManager {
|
||||
public class JsonApiManager extends BaseApiManager {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(JsonApiManager.class);
|
||||
|
||||
protected String jsonPathPrefix = "/json";
|
||||
public JsonApiManager() {
|
||||
setPathPrefix("/json");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(final HttpServletRequest request) {
|
||||
|
@ -61,7 +62,7 @@ public class JsonApiManager extends BaseApiManager implements WebApiManager {
|
|||
}
|
||||
|
||||
final String servletPath = request.getServletPath();
|
||||
return servletPath.startsWith(jsonPathPrefix);
|
||||
return servletPath.startsWith(pathPrefix);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -670,12 +671,4 @@ public class JsonApiManager extends BaseApiManager implements WebApiManager {
|
|||
return Integer.toHexString(ch).toUpperCase();
|
||||
}
|
||||
|
||||
public String getJsonPathPrefix() {
|
||||
return jsonPathPrefix;
|
||||
}
|
||||
|
||||
public void setJsonPathPrefix(final String jsonPathPrefix) {
|
||||
this.jsonPathPrefix = jsonPathPrefix;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -32,7 +32,6 @@ import org.codelibs.core.CoreLibConstants;
|
|||
import org.codelibs.core.lang.StringUtil;
|
||||
import org.codelibs.fess.Constants;
|
||||
import org.codelibs.fess.api.BaseApiManager;
|
||||
import org.codelibs.fess.api.WebApiManager;
|
||||
import org.codelibs.fess.api.WebApiRequest;
|
||||
import org.codelibs.fess.api.WebApiResponse;
|
||||
import org.codelibs.fess.entity.PingResponse;
|
||||
|
@ -45,10 +44,12 @@ import org.codelibs.fess.util.WebApiUtil;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class XmlApiManager extends BaseApiManager implements WebApiManager {
|
||||
public class XmlApiManager extends BaseApiManager {
|
||||
private static final Logger logger = LoggerFactory.getLogger(XmlApiManager.class);
|
||||
|
||||
protected String xmlPathPrefix = "/xml";
|
||||
public XmlApiManager() {
|
||||
setPathPrefix("/xml");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(final HttpServletRequest request) {
|
||||
|
@ -57,7 +58,7 @@ public class XmlApiManager extends BaseApiManager implements WebApiManager {
|
|||
}
|
||||
|
||||
final String servletPath = request.getServletPath();
|
||||
return servletPath.startsWith(xmlPathPrefix);
|
||||
return servletPath.startsWith(pathPrefix);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -403,11 +404,4 @@ public class XmlApiManager extends BaseApiManager implements WebApiManager {
|
|||
return buf.toString();
|
||||
}
|
||||
|
||||
public String getXmlPathPrefix() {
|
||||
return xmlPathPrefix;
|
||||
}
|
||||
|
||||
public void setXmlPathPrefix(final String xmlPathPrefix) {
|
||||
this.xmlPathPrefix = xmlPathPrefix;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
*/
|
||||
package org.codelibs.fess.mylasta.action;
|
||||
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.codelibs.fess.es.exentity.User;
|
||||
import org.lastaflute.web.login.TypicalUserBean;
|
||||
|
||||
|
@ -37,10 +39,6 @@ public class FessUserBean extends TypicalUserBean<String> { // #change_it also L
|
|||
// ===================================================================================
|
||||
// Constructor
|
||||
// ===========
|
||||
public FessUserBean() {
|
||||
// TODO needed?
|
||||
}
|
||||
|
||||
public FessUserBean(final User user) {
|
||||
this.user = user;
|
||||
}
|
||||
|
@ -56,4 +54,19 @@ public class FessUserBean extends TypicalUserBean<String> { // #change_it also L
|
|||
// ===================================================================================
|
||||
// Accessor
|
||||
// ========
|
||||
public String[] getRoles() {
|
||||
return user.getRoles();
|
||||
}
|
||||
|
||||
public String[] getGroups() {
|
||||
return user.getGroups();
|
||||
}
|
||||
|
||||
public boolean hasRole(String role) {
|
||||
return Stream.of(user.getRoles()).anyMatch(s -> s.equals(role));
|
||||
}
|
||||
|
||||
public boolean hasRoles(String[] acceptedRoles) {
|
||||
return Stream.of(user.getRoles()).anyMatch(s1 -> Stream.of(acceptedRoles).anyMatch(s2 -> s2.equals(s1)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -51,6 +51,7 @@ import org.codelibs.fess.job.JobExecutor;
|
|||
import org.lastaflute.core.message.MessageManager;
|
||||
import org.lastaflute.di.core.SingletonLaContainer;
|
||||
import org.lastaflute.di.core.factory.SingletonLaContainerFactory;
|
||||
import org.lastaflute.web.servlet.session.SessionManager;
|
||||
|
||||
public final class ComponentUtil {
|
||||
private static final String DICTIONARY_MANAGER = "dictionaryManager";
|
||||
|
@ -263,6 +264,10 @@ public final class ComponentUtil {
|
|||
return getComponent(FessLoginAssist.class);
|
||||
}
|
||||
|
||||
public static SessionManager getSessionManager() {
|
||||
return getComponent(SessionManager.class);
|
||||
}
|
||||
|
||||
public static <T> T getComponent(final Class<T> clazz) {
|
||||
return SingletonLaContainer.getComponent(clazz);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue