Procházet zdrojové kódy

fix #606 display profile menu on editable user

Shinsuke Sugaya před 9 roky
rodič
revize
4632317847

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/scheduler/AdminSchedulerAction.java

@@ -267,7 +267,7 @@ public class AdminSchedulerAction extends FessAdminAction {
         validate(form, messages -> {}, () -> asDetailsHtml(id));
         verifyToken(() -> asDetailsHtml(id));
         scheduledJobService.getScheduledJob(id).ifPresent(entity -> {
-            if(!entity.isEnabled()||entity.isRunning()){
+            if (!entity.isEnabled() || entity.isRunning()) {
                 throwValidationError(messages -> {
                     messages.addErrorsFailedToStartJob(GLOBAL, entity.getName());
                 }, () -> asDetailsHtml(id));

+ 1 - 0
src/main/java/org/codelibs/fess/app/web/base/FessSearchAction.java

@@ -124,6 +124,7 @@ public abstract class FessSearchAction extends FessBaseAction {
         runtime.registerData("langItems", systemHelper.getLanguageItems(locale));
         final String username = systemHelper.getUsername();
         runtime.registerData("username", username);
+        runtime.registerData("editableUser", fessLoginAssist.getSavedUserBean().map(user -> user.isEditable()).orElse(false));
         runtime.registerData("adminUser", fessConfig.isAdminUser(username));
 
         runtime.registerData("pageLoginLink", fessConfig.isLoginLinkEnabled());

+ 5 - 0
src/main/java/org/codelibs/fess/app/web/base/login/OpenIdConnectCredential.java

@@ -95,5 +95,10 @@ public class OpenIdConnectCredential implements LoginCredential {
             return permissions;
         }
 
+        @Override
+        public boolean isEditable() {
+            return false;
+        }
+
     }
 }

+ 2 - 0
src/main/java/org/codelibs/fess/entity/FessUser.java

@@ -26,4 +26,6 @@ public interface FessUser extends Serializable {
     String[] getGroupNames();
 
     String[] getPermissions();
+
+    boolean isEditable();
 }

+ 5 - 0
src/main/java/org/codelibs/fess/es/user/exentity/User.java

@@ -91,4 +91,9 @@ public class User extends BsUser implements FessUser {
         return list.toArray(new String[list.size()]);
     }
 
+    @Override
+    public boolean isEditable() {
+        return true;
+    }
+
 }

+ 5 - 0
src/main/java/org/codelibs/fess/ldap/LdapUser.java

@@ -82,4 +82,9 @@ public class LdapUser implements FessUser {
         return env;
     }
 
+    @Override
+    public boolean isEditable() {
+        return ComponentUtil.getFessConfig().isLdapAdminEnabled(name);
+    }
+
 }

+ 9 - 0
src/main/java/org/codelibs/fess/mylasta/action/FessUserBean.java

@@ -67,6 +67,10 @@ public class FessUserBean extends TypicalUserBean<String> { // #change_it also L
         return user.getGroupNames();
     }
 
+    public boolean isEditable() {
+        return user.isEditable();
+    }
+
     public boolean hasRole(final String role) {
         return stream(user.getRoleNames()).get(stream -> stream.anyMatch(s -> s.equals(role)));
     }
@@ -103,6 +107,11 @@ public class FessUserBean extends TypicalUserBean<String> { // #change_it also L
             public String[] getRoles() {
                 return StringUtil.EMPTY_STRINGS;
             }
+
+            @Override
+            public boolean isEditable() {
+                return false;
+            }
         };
     }
 }

+ 5 - 3
src/main/webapp/WEB-INF/view/error/header.jsp

@@ -38,9 +38,11 @@
 								<span>${username}</span>
 							</a>
 							<div class="dropdown-menu" aria-labelledby="userMenu">
-								<la:link href="/profile" styleClass="dropdown-item">
-									<la:message key="labels.profile" />
-								</la:link>
+								<c:if test="${editableUser == true}">
+									<la:link href="/profile" styleClass="dropdown-item">
+										<la:message key="labels.profile" />
+									</la:link>
+								</c:if>
 								<c:if test="${adminUser == true}">
 									<la:link href="/admin" styleClass="dropdown-item">
 										<la:message key="labels.administration" />

+ 5 - 3
src/main/webapp/WEB-INF/view/header.jsp

@@ -38,9 +38,11 @@ ${fe:facetForm()}${fe:geoForm()}
 								<span>${username}</span>
 							</a>
 							<div class="dropdown-menu" aria-labelledby="userMenu">
-								<la:link href="/profile" styleClass="dropdown-item">
-									<la:message key="labels.profile" />
-								</la:link>
+								<c:if test="${editableUser == true}">
+									<la:link href="/profile" styleClass="dropdown-item">
+										<la:message key="labels.profile" />
+									</la:link>
+								</c:if>
 								<c:if test="${adminUser == true}">
 									<la:link href="/admin" styleClass="dropdown-item">
 										<la:message key="labels.administration" />

+ 5 - 3
src/main/webapp/WEB-INF/view/index.jsp

@@ -30,9 +30,11 @@
 									aria-expanded="false"> <i class="fa fa-user"></i>${username}
 								</a>
 								<div class="dropdown-menu" aria-labelledby="userMenu">
-									<la:link href="/profile" styleClass="dropdown-item">
-										<la:message key="labels.profile" />
-									</la:link>
+									<c:if test="${editableUser == true}">
+										<la:link href="/profile" styleClass="dropdown-item">
+											<la:message key="labels.profile" />
+										</la:link>
+									</c:if>
 									<c:if test="${adminUser == true}">
 										<la:link href="/admin" styleClass="dropdown-item">
 											<la:message key="labels.administration" />