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 37cdc8a6484d7e47f8500ff38c958b890019cd43..2fc893e1aa1ede7e93c0c10addf3c519700364a8 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<String, FessUserBean, User> // #change_it also UserBean
+public class FessLoginAssist extends TypicalLoginAssist<String, FessUserBean, FessUser> // #change_it also UserBean
implements LoginManager {
// ===================================================================================
@@ -67,8 +67,8 @@ public class FessLoginAssist extends TypicalLoginAssist<String, FessUserBean, Us
}
@Override
- public OptionalEntity<User> findLoginUser(String username, String password) {
- OptionalEntity<User> ldapUser = ComponentUtil.getLdapManager().login(username, password);
+ public OptionalEntity<FessUser> findLoginUser(String username, String password) {
+ OptionalEntity<FessUser> ldapUser = ComponentUtil.getLdapManager().login(username, password);
if (ldapUser.isPresent()) {
return ldapUser;
}
@@ -76,25 +76,25 @@ public class FessLoginAssist extends TypicalLoginAssist<String, FessUserBean, Us
}
@Override
- protected OptionalEntity<User> doFindLoginUser(final String username, final String cipheredPassword) {
+ protected OptionalEntity<FessUser> 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<User> doFindLoginUser(final String username) {
+ protected OptionalEntity<FessUser> 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<String, FessUserBean, Us
}
@Override
- protected void saveLoginHistory(final User user, final FessUserBean userBean, final LoginSpecifiedOption option) {
+ protected void saveLoginHistory(final FessUser user, final FessUserBean userBean, final LoginSpecifiedOption option) {
asyncManager.async(() -> {
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 0000000000000000000000000000000000000000..6ca260d5b55de90368b168e2f4cf925ccc517a8a
--- /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 48f88e9ef21b860d5646c2a0f5980bd37571b88f..7075e52f41fdf2a1efa2233a14b4ce428589e55a 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 1c9ba4658c664f52114266a3de90160bd3dc4926..95a7f6f1dfba2b07a3184a06e67d2bf24481caef 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 fc303f24cd0586b4384fa1991a46b1290addbcde..a763bb491b203e784364417f5713dd1f5a0d67fd 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<User> login(String username, String password) {
+ public OptionalEntity<FessUser> 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<String, String> 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 d2cfc74a73ad0b7d6aa6c2a95d0f6028e093408b..a7b73973c0a8490bb5b8977754f100348f3fa360 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<String, String> env;
+
+ protected String name;
+
+ public LdapUser(Hashtable<String, String> 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 ef9cb6d81f4618e14c7c2c54f20921c0c9b8467c..53e67bcba10b672390a3aa64e3667cac2ce24de9 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<String> { // #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<String> { // #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<String> { // #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 d5eea995596383f35fe4d173d67e37e94de3a516..4df4c35f3e3173a6c99bdd52e103875f11aa37d7 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 @@
<label for="ldapProviderUrl"
class="col-sm-3 control-label"><la:message
key="labels.ldapProviderUrl" /></label>
- <div class="form-inline col-sm-9">
+ <div class="col-sm-9">
<la:errors property="ldapProviderUrl" />
<la:text property="ldapProviderUrl"
styleClass="form-control" />
@@ -304,7 +304,7 @@
<label for="ldapSecurityPrincipal"
class="col-sm-3 control-label"><la:message
key="labels.ldapSecurityPrincipal" /></label>
- <div class="form-inline col-sm-9">
+ <div class="col-sm-9">
<la:errors property="ldapSecurityPrincipal" />
<la:text property="ldapSecurityPrincipal"
styleClass="form-control" />