diff --git a/src/main/java/org/codelibs/fess/app/web/base/login/FessLoginAssist.java b/src/main/java/org/codelibs/fess/app/web/base/login/FessLoginAssist.java index 37cdc8a64..2fc893e1a 100644 --- a/src/main/java/org/codelibs/fess/app/web/base/login/FessLoginAssist.java +++ b/src/main/java/org/codelibs/fess/app/web/base/login/FessLoginAssist.java @@ -20,8 +20,8 @@ import javax.annotation.Resource; import org.codelibs.fess.Constants; import org.codelibs.fess.app.web.RootAction; import org.codelibs.fess.app.web.login.LoginAction; +import org.codelibs.fess.entity.FessUser; import org.codelibs.fess.es.user.exbhv.UserBhv; -import org.codelibs.fess.es.user.exentity.User; import org.codelibs.fess.exception.UserRoleLoginException; import org.codelibs.fess.mylasta.action.FessUserBean; import org.codelibs.fess.mylasta.direction.FessConfig; @@ -40,7 +40,7 @@ import org.lastaflute.web.login.option.LoginSpecifiedOption; * @author jflute * @author shinsuke */ -public class FessLoginAssist extends TypicalLoginAssist // #change_it also UserBean +public class FessLoginAssist extends TypicalLoginAssist // #change_it also UserBean implements LoginManager { // =================================================================================== @@ -67,8 +67,8 @@ public class FessLoginAssist extends TypicalLoginAssist findLoginUser(String username, String password) { - OptionalEntity ldapUser = ComponentUtil.getLdapManager().login(username, password); + public OptionalEntity findLoginUser(String username, String password) { + OptionalEntity ldapUser = ComponentUtil.getLdapManager().login(username, password); if (ldapUser.isPresent()) { return ldapUser; } @@ -76,25 +76,25 @@ public class FessLoginAssist extends TypicalLoginAssist doFindLoginUser(final String username, final String cipheredPassword) { + protected OptionalEntity doFindLoginUser(final String username, final String cipheredPassword) { return userBhv.selectEntity(cb -> { cb.query().setName_Equal(username); cb.query().setPassword_Equal(cipheredPassword); - }); + }).map(user -> (FessUser) user); } @Override - protected OptionalEntity doFindLoginUser(final String username) { + protected OptionalEntity doFindLoginUser(final String username) { return userBhv.selectEntity(cb -> { cb.query().setName_Equal(username); - }); + }).map(user -> (FessUser) user); } // =================================================================================== // Login Process // ============= @Override - protected FessUserBean createUserBean(final User user) { + protected FessUserBean createUserBean(final FessUser user) { return new FessUserBean(user); } @@ -106,7 +106,7 @@ public class FessLoginAssist extends TypicalLoginAssist { insertLogin(user); }); diff --git a/src/main/java/org/codelibs/fess/entity/FessUser.java b/src/main/java/org/codelibs/fess/entity/FessUser.java new file mode 100644 index 000000000..6ca260d5b --- /dev/null +++ b/src/main/java/org/codelibs/fess/entity/FessUser.java @@ -0,0 +1,13 @@ +package org.codelibs.fess.entity; + +import java.io.Serializable; + +public interface FessUser extends Serializable { + + String getName(); + + String[] getRoleNames(); + + String[] getGroupNames(); + +} diff --git a/src/main/java/org/codelibs/fess/es/user/exentity/User.java b/src/main/java/org/codelibs/fess/es/user/exentity/User.java index 48f88e9ef..7075e52f4 100644 --- a/src/main/java/org/codelibs/fess/es/user/exentity/User.java +++ b/src/main/java/org/codelibs/fess/es/user/exentity/User.java @@ -18,13 +18,14 @@ package org.codelibs.fess.es.user.exentity; import java.util.Base64; import org.codelibs.fess.Constants; +import org.codelibs.fess.entity.FessUser; import org.codelibs.fess.es.user.bsentity.BsUser; import org.codelibs.fess.util.StreamUtil; /** * @author FreeGen */ -public class User extends BsUser { +public class User extends BsUser implements FessUser { private static final long serialVersionUID = 1L; diff --git a/src/main/java/org/codelibs/fess/helper/impl/RoleQueryHelperImpl.java b/src/main/java/org/codelibs/fess/helper/impl/RoleQueryHelperImpl.java index 1c9ba4658..95a7f6f1d 100644 --- a/src/main/java/org/codelibs/fess/helper/impl/RoleQueryHelperImpl.java +++ b/src/main/java/org/codelibs/fess/helper/impl/RoleQueryHelperImpl.java @@ -15,16 +15,13 @@ */ package org.codelibs.fess.helper.impl; -import java.io.IOException; import java.io.Serializable; import java.util.ArrayList; -import java.util.Base64; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.Set; import javax.annotation.PostConstruct; @@ -33,7 +30,6 @@ import javax.servlet.http.HttpServletRequest; import org.codelibs.core.crypto.CachedCipher; import org.codelibs.core.lang.StringUtil; -import org.codelibs.fess.Constants; import org.codelibs.fess.app.web.base.login.FessLoginAssist; import org.codelibs.fess.helper.RoleQueryHelper; import org.codelibs.fess.util.ComponentUtil; @@ -115,14 +111,7 @@ public class RoleQueryHelperImpl implements RoleQueryHelper, Serializable { } final FessLoginAssist fessLoginAssist = ComponentUtil.getComponent(FessLoginAssist.class); - fessLoginAssist.getSessionUserBean().ifPresent( - fessUserBean -> StreamUtil.of(fessUserBean.getRoles()).map(role -> Base64.getDecoder().decode(role)).map(role -> { - try { - return Optional.of(new String(role, Constants.UTF_8)); - } catch (final IOException e) { - return null; - } - }).forEach(role -> role.ifPresent(roleList::add))); + fessLoginAssist.getSessionUserBean().ifPresent(fessUserBean -> StreamUtil.of(fessUserBean.getRoles()).forEach(roleList::add)); if (defaultRoleList != null) { roleList.addAll(defaultRoleList); diff --git a/src/main/java/org/codelibs/fess/ldap/LdapManager.java b/src/main/java/org/codelibs/fess/ldap/LdapManager.java index fc303f24c..a763bb491 100644 --- a/src/main/java/org/codelibs/fess/ldap/LdapManager.java +++ b/src/main/java/org/codelibs/fess/ldap/LdapManager.java @@ -23,7 +23,7 @@ import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; import org.codelibs.core.lang.StringUtil; -import org.codelibs.fess.es.user.exentity.User; +import org.codelibs.fess.entity.FessUser; import org.codelibs.fess.filter.AdLoginInfoFilter; import org.codelibs.fess.mylasta.direction.FessConfig; import org.codelibs.fess.util.ComponentUtil; @@ -34,7 +34,7 @@ import org.slf4j.LoggerFactory; public class LdapManager { private static final Logger logger = LoggerFactory.getLogger(AdLoginInfoFilter.class); - public OptionalEntity login(String username, String password) { + public OptionalEntity login(String username, String password) { FessConfig fessConfig = ComponentUtil.getFessConfig(); String providerUrl = fessConfig.getLdapProviderUrl(); @@ -54,9 +54,9 @@ public class LdapManager { if (logger.isDebugEnabled()) { logger.debug("Logged in.", ctx); } - return OptionalEntity.of(new LdapUser(username)); + return OptionalEntity.of(createLdapUser(username, env)); } catch (NamingException e) { - logger.warn("Login failed.", e); + logger.debug("Login failed.", e); } finally { if (ctx != null) { try { @@ -68,4 +68,8 @@ public class LdapManager { } return OptionalEntity.empty(); } + + protected LdapUser createLdapUser(String username, Hashtable env) { + return new LdapUser(env, username); + } } diff --git a/src/main/java/org/codelibs/fess/ldap/LdapUser.java b/src/main/java/org/codelibs/fess/ldap/LdapUser.java index d2cfc74a7..a7b73973c 100644 --- a/src/main/java/org/codelibs/fess/ldap/LdapUser.java +++ b/src/main/java/org/codelibs/fess/ldap/LdapUser.java @@ -15,14 +15,38 @@ */ package org.codelibs.fess.ldap; -import org.codelibs.fess.es.user.exentity.User; +import java.util.Hashtable; -public class LdapUser extends User { +import org.codelibs.core.lang.StringUtil; +import org.codelibs.fess.entity.FessUser; + +public class LdapUser implements FessUser { private static final long serialVersionUID = 1L; - public LdapUser(String username) { - setId(username); + protected Hashtable env; + + protected String name; + + public LdapUser(Hashtable env, String name) { + this.env = env; + this.name = name; } + @Override + public String getName() { + return name; + } + + @Override + public String[] getRoleNames() { + // TODO + return StringUtil.EMPTY_STRINGS; + } + + @Override + public String[] getGroupNames() { + // TODO + return StringUtil.EMPTY_STRINGS; + } } diff --git a/src/main/java/org/codelibs/fess/mylasta/action/FessUserBean.java b/src/main/java/org/codelibs/fess/mylasta/action/FessUserBean.java index ef9cb6d81..53e67bcba 100644 --- a/src/main/java/org/codelibs/fess/mylasta/action/FessUserBean.java +++ b/src/main/java/org/codelibs/fess/mylasta/action/FessUserBean.java @@ -15,7 +15,7 @@ */ package org.codelibs.fess.mylasta.action; -import org.codelibs.fess.es.user.exentity.User; +import org.codelibs.fess.entity.FessUser; import org.codelibs.fess.util.StreamUtil; import org.lastaflute.web.login.TypicalUserBean; @@ -29,7 +29,7 @@ public class FessUserBean extends TypicalUserBean { // #change_it also L // ========== /** The serial version UID for object serialization. (Default) */ private static final long serialVersionUID = 1L; - private final User user; + private final FessUser user; // =================================================================================== // Attribute @@ -38,7 +38,7 @@ public class FessUserBean extends TypicalUserBean { // #change_it also L // =================================================================================== // Constructor // =========== - public FessUserBean(final User user) { + public FessUserBean(final FessUser user) { this.user = user; } @@ -54,11 +54,11 @@ public class FessUserBean extends TypicalUserBean { // #change_it also L // Accessor // ======== public String[] getRoles() { - return user.getRoles(); + return user.getRoleNames(); } public String[] getGroups() { - return user.getGroups(); + return user.getGroupNames(); } public boolean hasRole(final String role) { diff --git a/src/main/webapp/WEB-INF/view/admin/general/admin_general.jsp b/src/main/webapp/WEB-INF/view/admin/general/admin_general.jsp index d5eea9955..4df4c35f3 100644 --- a/src/main/webapp/WEB-INF/view/admin/general/admin_general.jsp +++ b/src/main/webapp/WEB-INF/view/admin/general/admin_general.jsp @@ -294,7 +294,7 @@ -
+
@@ -304,7 +304,7 @@ -
+