Index: lams_central/src/java/org/lamsfoundation/lams/web/IndexAction.java =================================================================== diff -u -reeb8faaea5372ccf5445d7172f726931e9f26098 -r3617b812ba50ea59fd9991680ee73e5ee41357cf --- lams_central/src/java/org/lamsfoundation/lams/web/IndexAction.java (.../IndexAction.java) (revision eeb8faaea5372ccf5445d7172f726931e9f26098) +++ lams_central/src/java/org/lamsfoundation/lams/web/IndexAction.java (.../IndexAction.java) (revision 3617b812ba50ea59fd9991680ee73e5ee41357cf) @@ -41,6 +41,8 @@ import org.apache.tomcat.util.json.JSONException; import org.apache.tomcat.util.json.JSONObject; import org.lamsfoundation.lams.index.IndexLinkBean; +import org.lamsfoundation.lams.integration.service.IIntegrationService; +import org.lamsfoundation.lams.integration.service.IntegrationService; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.User; @@ -68,6 +70,7 @@ private static Logger log = Logger.getLogger(IndexAction.class); private static IUserManagementService userManagementService; + private static IIntegrationService integrationService; @Override @SuppressWarnings("unchecked") @@ -116,6 +119,16 @@ } else if (StringUtils.equals(method, "lessons")) { return mapping.findForward("lessons"); } + + boolean isIntegrationUser = getIntegrationService().isIntegrationUser(userDTO.getUserID()); + //prevent integration users with mere learner rights from accessing index.do + if (isIntegrationUser && !request.isUserInRole(Role.AUTHOR) && !request.isUserInRole(Role.MONITOR) + && !request.isUserInRole(Role.GROUP_MANAGER) && !request.isUserInRole(Role.GROUP_ADMIN) + && !request.isUserInRole(Role.SYSADMIN)) { + response.sendError(HttpServletResponse.SC_FORBIDDEN, + "Integration users with learner right are not allowed to access this page"); + return null; + } // only show the growl warning the first time after a user has logged in & if turned on in configuration Boolean tzWarning = Configuration.getAsBoolean(ConfigurationKeys.SHOW_TIMEZONE_WARNING); @@ -265,6 +278,14 @@ UserDTO learner = (UserDTO) ss.getAttribute(AttributeNames.USER); return learner != null ? learner.getUserID() : null; } + + private IIntegrationService getIntegrationService() { + if (integrationService == null) { + integrationService = (IntegrationService) WebApplicationContextUtils + .getRequiredWebApplicationContext(getServlet().getServletContext()).getBean("integrationService"); + } + return integrationService; + } private IUserManagementService getUserManagementService() { if (userManagementService == null) { Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java =================================================================== diff -u -r5bf2d3b201efb46864182d72901e497d0acb253f -r3617b812ba50ea59fd9991680ee73e5ee41357cf --- lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java (.../IIntegrationService.java) (revision 5bf2d3b201efb46864182d72901e497d0acb253f) +++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java (.../IIntegrationService.java) (revision 3617b812ba50ea59fd9991680ee73e5ee41357cf) @@ -147,6 +147,14 @@ ExtUserUseridMap getImplicitExtUserUseridMap(ExtServer extServer, String extUsername, String firstName, String lastName, String language, String country, String email, boolean prefix, boolean isUpdateUserDetails) throws UserInfoValidationException; + + /** + * Checks whether user was created via integrations. + * + * @param userId + * @return + */ + boolean isIntegrationUser(Integer userId); ExtUserUseridMap getImplicitExtUserUseridMap(ExtServer extServer, String extUsername, String password, String salt, String firstName, String lastName, String email) throws UserInfoValidationException; Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java =================================================================== diff -u -r5bf2d3b201efb46864182d72901e497d0acb253f -r3617b812ba50ea59fd9991680ee73e5ee41357cf --- lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision 5bf2d3b201efb46864182d72901e497d0acb253f) +++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision 3617b812ba50ea59fd9991680ee73e5ee41357cf) @@ -515,6 +515,14 @@ throw new UserInfoFetchException(e); } } + + @Override + public boolean isIntegrationUser(Integer userId) { + Map properties = new HashMap<>(); + properties.put("user.userId", userId); + List list = service.findByProperties(ExtUserUseridMap.class, properties); + return (list != null) && !list.isEmpty(); + } @Override public String hash(ExtServer extServer, String extUsername, String timestamp) {