Index: lams_central/src/java/org/lamsfoundation/lams/web/ShibLoginServlet.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/web/Attic/ShibLoginServlet.java,v diff -u -r1.1.2.10 -r1.1.2.11 --- lams_central/src/java/org/lamsfoundation/lams/web/ShibLoginServlet.java 20 Jul 2007 02:58:53 -0000 1.1.2.10 +++ lams_central/src/java/org/lamsfoundation/lams/web/ShibLoginServlet.java 20 Jul 2007 07:06:13 -0000 1.1.2.11 @@ -106,6 +106,7 @@ if (user != null) { // TODO update user attributes if changed log.info("Found account for shibboleth user "+localUsername+"..."); + response.sendRedirect("j_security_check?j_username="+localUsername+"&j_password="+user.getPassword()); } else { try { log.info("Creating new user: "+localUsername); @@ -115,7 +116,7 @@ flagError(request, response); } } - int shibOrgId = Configuration.getAsInt(ConfigurationKeys.SHIB_ORG_ID); + String shibOrgId = Configuration.get(ConfigurationKeys.SHIB_ORG_ID); Organisation org = getShibbolethOrganisation(shibOrgId); try { @@ -140,13 +141,14 @@ } // returns shibboleth group as specified by ShibOrgId configuration parameter - private Organisation getShibbolethOrganisation(int shibOrgId) { - Organisation org; - if (shibOrgId <= 0) { + private Organisation getShibbolethOrganisation(String shibOrgId) { + Organisation org = null; + if (shibOrgId != null && shibOrgId.trim().length() > 0) { + org = (Organisation)service.findById(Organisation.class, new Integer(shibOrgId)); + } + if (org == null) { log.info("Creating new organisation for shibboleth users..."); org = saveNewShibOrg(); - } else { - org = (Organisation)service.findById(Organisation.class, new Integer(shibOrgId)); } return org; } @@ -182,6 +184,8 @@ // create new hidden group to contain shib user's roles private Organisation saveNewShibOrg() { + WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); + Configuration configuration = (Configuration) ctx.getBean("configurationService"); Organisation org = new Organisation(); try { org = new Organisation(); @@ -196,6 +200,7 @@ org = service.saveOrganisation(org, new Integer(1)); writeAuditLog(org); Configuration.updateItem(ConfigurationKeys.SHIB_ORG_ID, org.getOrganisationId().toString()); + configuration.persistUpdate(); } catch (Exception e) { log.error("Couldn't save new organisation: ", e); } @@ -218,7 +223,7 @@ String[] roleNames = roles.split(";"); ArrayList roleIds = new ArrayList(); for (String roleName : roleNames) { - Role role = (Role)service.findByProperty(Role.class, "name", roleName); + Role role = (Role)service.findByProperty(Role.class, "name", roleName).get(0); if (role != null) { roleIds.add(role.getRoleId().toString()); } else {