Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserSearchController.java =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rd13f92ca7aa2afe69ccfc88656fa5e1afe8d5f31 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserSearchController.java (.../UserSearchController.java) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserSearchController.java (.../UserSearchController.java) (revision d13f92ca7aa2afe69ccfc88656fa5e1afe8d5f31) @@ -34,6 +34,8 @@ import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -53,7 +55,7 @@ @Controller public class UserSearchController { private static Logger log = Logger.getLogger(UserSearchController.class); - + @Autowired private IUserManagementService userManagementService; @Autowired @@ -70,6 +72,10 @@ return "error"; } + boolean loginAsEnable = Configuration.getAsBoolean(ConfigurationKeys.LOGIN_AS_ENABLE) + && request.isUserInRole(Role.SYSADMIN); + request.setAttribute("loginAsEnable", loginAsEnable); + return "usersearchlist"; } Index: lams_admin/web/usersearchlist.jsp =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rd13f92ca7aa2afe69ccfc88656fa5e1afe8d5f31 --- lams_admin/web/usersearchlist.jsp (.../usersearchlist.jsp) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/web/usersearchlist.jsp (.../usersearchlist.jsp) (revision d13f92ca7aa2afe69ccfc88656fa5e1afe8d5f31) @@ -4,7 +4,6 @@ - @@ -96,7 +95,7 @@ rows += ' '; rows += '
'; rows += ' '; - + rows += '" href="loginas.do?login=' + orgData["login"] + '" id="loginAs' + orgData["userId"] +'">'; rows += ''; rows += ''; Index: lams_central/src/java/org/lamsfoundation/lams/web/LoginAsController.java =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rd13f92ca7aa2afe69ccfc88656fa5e1afe8d5f31 --- lams_central/src/java/org/lamsfoundation/lams/web/LoginAsController.java (.../LoginAsController.java) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_central/src/java/org/lamsfoundation/lams/web/LoginAsController.java (.../LoginAsController.java) (revision d13f92ca7aa2afe69ccfc88656fa5e1afe8d5f31) @@ -67,7 +67,7 @@ public String execute(HttpServletRequest request) throws Exception { String login = WebUtil.readStrParam(request, "login", false); - if (userManagementService.isUserAppAdmin() && Configuration.getAsBoolean(ConfigurationKeys.LOGIN_AS_ENABLE)) { + if (request.isUserInRole(Role.SYSADMIN) && Configuration.getAsBoolean(ConfigurationKeys.LOGIN_AS_ENABLE)) { if ((login != null) && (login.trim().length() > 0)) { User user = userManagementService.getUserByLogin(login); if (user != null) { @@ -118,7 +118,8 @@ for (Set orgRoleSet : orgRoleSets.values()) { for (Integer role : orgRoleSet) { if (role.equals(Role.ROLE_AUTHOR) || role.equals(Role.ROLE_MONITOR) - || role.equals(Role.ROLE_GROUP_MANAGER) || role.equals(Role.ROLE_APPADMIN)) { + || role.equals(Role.ROLE_GROUP_MANAGER) || role.equals(Role.ROLE_APPADMIN) + || role.equals(Role.ROLE_SYSADMIN)) { return false; } }