/** This method gets a list of roles */ public List getRoles() throws Exception { List roles = new ArrayList(); ResultSet rs = null; Connection conn = null; PreparedStatement ps = null; try { String roleNameColumn = this.extraProperties.getProperty("jdbc.roleNameColumn"); if (roleNameColumn == null || roleNameColumn.equals("")) roleNameColumn = "ROLE_NAME"; String roleDescriptionColumn = this.extraProperties.getProperty("jdbc.roleDescriptionColumn"); if (roleDescriptionColumn == null || roleDescriptionColumn.equals("")) roleDescriptionColumn = "ROLE_DESCRIPTION"; String sql = this.extraProperties.getProperty("jdbc.rolesSQL"); if (sql == null || sql.equals("")) sql = "SELECT * from ROLE ORDER BY ROLE_NAME"; conn = getConnection(); ps = conn.prepareStatement(sql); rs = ps.executeQuery(); while (rs.next()) { String roleName = rs.getString(roleNameColumn); String description = rs.getString(roleDescriptionColumn); InfoGlueRole infoGlueRole = new InfoGlueRole(roleName, description, this); roles.add(infoGlueRole); logger.info("Role created:" + infoGlueRole.getName()); } } catch (Exception e) { logger.info("An error occurred trying to get all roles:" + e); throw new SystemException(e.getMessage()); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { } } if (ps != null) { try { ps.close(); } catch (SQLException e) { } } if (conn != null) { try { conn.close(); } catch (Exception ex) { } } } return roles; }
/** Gets an authorized InfoGlueRole. */ public InfoGlueRole getAuthorizedInfoGlueRole(String roleName) throws Exception { InfoGlueRole infoglueRole = null; ResultSet rs = null; Connection conn = null; PreparedStatement ps = null; try { String roleDescriptionColumn = this.extraProperties.getProperty("jdbc.roleDescriptionColumn"); if (roleDescriptionColumn == null || roleDescriptionColumn.equals("")) roleDescriptionColumn = "ROLE_DESCRIPTION"; String sql = this.extraProperties.getProperty("jdbc.roleSQL"); if (sql == null || sql.equals("")) sql = "SELECT * from ROLE where ROLE.ROLE_NAME = ?"; conn = getConnection(); ps = conn.prepareStatement(sql); ps.setString(1, roleName); rs = ps.executeQuery(); while (rs.next()) { String description = rs.getString(roleDescriptionColumn); infoglueRole = new InfoGlueRole(roleName, description, this); } logger.info("Role created:" + infoglueRole.getName()); } catch (Exception e) { logger.info("An error occurred trying to get jdbc user for " + roleName + ":" + e); throw new SystemException(e.getMessage()); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { } } if (ps != null) { try { ps.close(); } catch (SQLException e) { } } if (conn != null) { try { conn.close(); } catch (Exception ex) { } } } return infoglueRole; }
/** Gets an authorized InfoGlueRole. */ public InfoGlueRole getAuthorizedInfoGlueRole(String roleName) throws Exception { InfoGlueRole infoglueRole = null; List<InfoGlueRole> roles = getRoles(); for (InfoGlueRole infoglueRoleCandidate : roles) { if (infoglueRoleCandidate.getName().equals(roleName)) { infoglueRole = infoglueRoleCandidate; break; } } return infoglueRole; }
/** * Gets an authorized InfoGluePrincipal. If the user has logged in with the root-account we * immediately return - otherwise we populate it. */ public InfoGluePrincipal getAuthorizedInfoGluePrincipal(String userName) throws Exception { logger.info("getAuthorizedInfoGluePrincipal with userName:"******"")) { logger.warn("userName was null or empty - fix your templates:" + userName); return null; } InfoGluePrincipal infogluePrincipal = null; String administratorUserName = CmsPropertyHandler.getAdministratorUserName(); String administratorEmail = CmsPropertyHandler.getAdministratorEmail(); final boolean isAdministrator = (userName != null && userName.equalsIgnoreCase(administratorUserName)) ? true : false; if (isAdministrator) { infogluePrincipal = new InfoGluePrincipal( userName, "System", "Administrator", administratorEmail, new ArrayList(), new ArrayList(), isAdministrator, this); } else { List roles = new ArrayList(); List groups = new ArrayList(); ResultSet rs = null; Connection conn = null; PreparedStatement ps = null; try { String userFirstNameColumn = this.extraProperties.getProperty("jdbc.userFirstNameColumn"); if (userFirstNameColumn == null || userFirstNameColumn.equals("")) userFirstNameColumn = "USER_FIRSTNAME"; String userLastNameColumn = this.extraProperties.getProperty("jdbc.userLastNameColumn"); if (userLastNameColumn == null || userLastNameColumn.equals("")) userLastNameColumn = "USER_LASTNAME"; String userEmailColumn = this.extraProperties.getProperty("jdbc.userEmailColumn"); if (userEmailColumn == null || userEmailColumn.equals("")) userEmailColumn = "USER_EMAIL"; String roleNameColumn = this.extraProperties.getProperty("jdbc.roleNameColumn"); if (roleNameColumn == null || roleNameColumn.equals("")) roleNameColumn = "ROLE_NAME"; String roleDescriptionColumn = this.extraProperties.getProperty("jdbc.roleDescriptionColumn"); if (roleDescriptionColumn == null || roleDescriptionColumn.equals("")) roleDescriptionColumn = "ROLE_DESCRIPTION"; String sql = this.extraProperties.getProperty("jdbc.userRolesSQL"); if (sql == null || sql.equals("")) sql = "SELECT * from USER, ROLE_USER, ROLE where ROLE_USER.USER = USER.ID AND ROLE_USER.ROLE = ROLE.ID AND USER.USER_NAME = ?"; conn = getConnection(); ps = conn.prepareStatement(sql); ps.setString(1, userName); rs = ps.executeQuery(); while (rs.next()) { logger.info("infoGluePrincipal:" + infogluePrincipal); if (infogluePrincipal != null) { String roleName = rs.getString(roleNameColumn); String description = rs.getString(roleDescriptionColumn); InfoGlueRole infoGlueRole = new InfoGlueRole(roleName, description, this); infogluePrincipal.getRoles().add(infoGlueRole); logger.info("Added role:" + infoGlueRole.getName()); } else { String userFirstName = rs.getString(userFirstNameColumn); String userLastName = rs.getString(userLastNameColumn); String userEmail = rs.getString(userEmailColumn); if (userFirstName == null) userFirstName = userName; if (userLastName == null) userLastName = userName; if (userEmail == null) userEmail = userName; String roleName = rs.getString(roleNameColumn); String description = rs.getString(roleDescriptionColumn); InfoGlueRole infoGlueRole = new InfoGlueRole(roleName, description, this); infogluePrincipal = new InfoGluePrincipal( userName, userFirstName, userLastName, userEmail, new ArrayList(), groups, false, this); infogluePrincipal.getRoles().add(infoGlueRole); logger.info("User read:" + infogluePrincipal.getName()); } } } catch (Exception e) { e.printStackTrace(); logger.info("An error occurred trying to get jdbc user for " + userName + ":" + e); throw new SystemException(e.getMessage()); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { } } if (ps != null) { try { ps.close(); } catch (SQLException e) { } } if (conn != null) { try { conn.close(); } catch (Exception ex) { } } } logger.info("returning from getAuthorizedInfoGluePrincipal with userName:" + userName); } return infogluePrincipal; }