| 1 22 package org.cofax.cms; 23 24 import java.io.IOException ; 25 import java.security.MessageDigest ; 26 import java.security.NoSuchAlgorithmException ; 27 import java.util.ArrayList ; 28 import java.util.HashMap ; 29 import java.util.Iterator ; 30 import java.util.Vector ; 31 32 import javax.servlet.http.HttpServletRequest ; 33 import javax.servlet.http.HttpServletResponse ; 34 import javax.servlet.http.HttpSession ; 35 36 import org.cofax.CofaxPage; 37 import org.cofax.DataStore; 38 import org.cofax.cms.login.ILoginHandler; 39 40 49 50 public class CofaxToolsLogin { 51 52 private static ILoginHandler loginHandler = null; 53 54 59 public static String login(DataStore db, HttpServletRequest req, HttpSession session, HashMap userInfoHash, HttpServletResponse res, CofaxPage page) { 60 return login(db, req, session, userInfoHash, res, page, true); 61 } 62 63 68 public static String login(DataStore db, HttpServletRequest req, HttpSession session, HashMap userInfoHash, HttpServletResponse res, CofaxPage page, 69 boolean doRedirect) { 70 71 String tag; 72 73 if (userInfoHash.size() >= 1) { 75 CofaxToolsUser user = new CofaxToolsUser(); 77 78 session.setAttribute("user", user); 80 81 user.userInfoHash = userInfoHash; 84 85 session.setMaxInactiveInterval(3600); 87 88 HashMap userPubDescPubIDHash = new HashMap (); 90 91 HashMap userPubNamePubIDHash = new HashMap (); 93 94 HashMap userGroupNameGroupIDHash = new HashMap (); 96 97 HashMap userPubNamePubDescHash = new HashMap (); 99 100 HashMap userPreviousArticlesHash = new HashMap (); 102 userPreviousArticlesHash.put("Previous Edits", ""); 103 104 HashMap fillReqTwo = new HashMap (); 106 fillReqTwo.put("USERID", (String ) userInfoHash.get("USERID")); 107 tag = CofaxToolsDbUtils.fillTag(db, "getVectorOfGroupsByUserID"); 108 Vector userGroupVector = CofaxToolsDbUtils.getPackageVector(db, fillReqTwo, tag); 109 110 tag = CofaxToolsDbUtils.fillTag(db, "getVectorOfGroupTypesByUserID"); 112 Vector userGroupTypeVector = CofaxToolsDbUtils.getPackageVector(db, fillReqTwo, tag); 113 114 user.userGroupVector = userGroupVector; 117 user.userGroupTypeVector = userGroupTypeVector; 118 119 Iterator keys = userGroupVector.iterator(); 122 Vector userPubsVectorOHash = new Vector (); 123 while (keys.hasNext()) { 124 125 String groupIDFromUserToGroup = (String ) keys.next(); 127 if (groupIDFromUserToGroup != null && !groupIDFromUserToGroup.equals("")) { 128 129 HashMap fillReqThree = new HashMap (); 130 fillReqThree.put("pubNameKey", groupIDFromUserToGroup); 131 tag = CofaxToolsDbUtils.fillTag(db, "getAllFromPermGroupsByGroupID"); 132 133 CofaxToolsUtil.log("tag= " + tag); 134 135 HashMap se = CofaxToolsDbUtils.getNameValuePackageHash(db, fillReqThree, tag); 136 137 String groupType = (String ) se.get("GROUPTYPE"); 138 String groupName = (String ) se.get("GROUPNAME"); 139 String groupID = (String ) se.get("GROUPID"); 140 userGroupNameGroupIDHash.put(groupID, groupName); 141 142 HashMap fillReqFour = new HashMap (); 143 fillReqFour.put("pubNameKey", groupIDFromUserToGroup); 144 tag = CofaxToolsDbUtils.fillTag(db, "getAllFromGroupToPubByGroupID"); 145 ArrayList s = (ArrayList ) CofaxToolsDbUtils.getPackageData(db, fillReqFour, tag); 148 149 Iterator pubKeys = s.iterator(); 151 while (pubKeys.hasNext()) { 152 HashMap groupIDpubID = (HashMap ) pubKeys.next(); 153 String pubID = (String ) groupIDpubID.get("PUBID"); 154 155 String pubName = ""; 156 String pubDesc = ""; 157 HashMap ht = new HashMap (); 159 ht.put(pubID, groupType); 160 userPubsVectorOHash.add(ht); 161 163 if (!userPubDescPubIDHash.containsKey(pubID)) { 164 HashMap htt = CofaxToolsUtil.getPubNamePubDescFromID(db, pubID); 165 pubName = (String ) htt.get("PUBNAME"); 166 pubDesc = (String ) htt.get("PUBDESC"); 167 userPubDescPubIDHash.put(pubDesc, pubID); 168 169 if (!userPubNamePubDescHash.containsKey(pubDesc)) { 172 userPubNamePubDescHash.put(pubDesc, pubName); 173 } 174 } 175 176 if (!userPubNamePubIDHash.containsKey(pubID)) { 178 userPubNamePubIDHash.put(pubName, pubID); 179 } 180 } 181 } 182 } 183 184 user.userPubsVectorOHash = userPubsVectorOHash; 187 user.userPubDescPubIDHash = userPubDescPubIDHash; 188 user.userPubNamePubIDHash = userPubNamePubIDHash; 189 user.userPubNamePubDescHash = userPubNamePubDescHash; 190 user.userPreviousArticlesHash = userPreviousArticlesHash; 191 user.userGroupNameGroupIDHash = userGroupNameGroupIDHash; 192 193 user.workingPub = (String ) user.userInfoHash.get("HOMEPUB"); 194 String role = (String ) user.userInfoHash.get("ROLE"); 195 String userFirstName = (String ) user.userInfoHash.get("FIRSTNAME"); 196 String userLastName = (String ) user.userInfoHash.get("LASTNAME"); 197 user.setUserWorkingPubConfigElements(db, session, user.workingPub); 198 user.workingPubDesc = CofaxToolsUtil.getPubDescFromID(db, user.workingPub); 199 user.workingPubName = CofaxToolsUtil.getPubNameFromID(db, user.workingPub); 200 201 String p = CofaxToolsUtil.getPublicationSelectID(db, session, (String ) userInfoHash.get("HOMEPUB"), "PUBLICATION"); 202 HashMap ht = new HashMap (); 203 ht.put("userRole", role); 204 ht.put("userFirstName", userFirstName); 205 ht.put("userLastName", userLastName); 206 ht.put("selectPublication", p); 207 208 String querystring = req.getParameter("querystring"); 209 boolean bOK = false; 210 211 if (doRedirect) { 212 if (!("".equals(querystring)) && querystring != null) { 213 try { 214 String urlRedirectTo = "" + CofaxToolsServlet.aliasPath + "/tools/?" + querystring; 215 if (!(urlRedirectTo.startsWith("/"))) 216 urlRedirectTo = "/" + urlRedirectTo; 217 res.sendRedirect(urlRedirectTo); 218 219 return ""; 220 } catch (IOException e) { 221 System.out.println("CofaxToolsNavigation : error while redirect"); 222 } 223 } else { 224 page.putGlossaryValue("system:message", CofaxToolsUtil.getI18NMessage(req.getLocale(), "welcomeMessage") + " " 225 + CofaxToolsUtil.getI18NMessage(req.getLocale(), "pleaseMakeSelection")); 226 try { 227 String urlRedirectTo = "" + CofaxToolsServlet.aliasPath + "/tools/"; 229 if (!(urlRedirectTo.startsWith("/"))) 230 urlRedirectTo = "/" + urlRedirectTo; 231 res.sendRedirect(urlRedirectTo); 232 233 return ""; 234 } catch (IOException e) { 235 System.out.println("CofaxToolsNavigation : error while redirect to cofax_navigation mode"); 236 } 237 return (""); 238 } 239 } 240 return (""); 241 242 } else { 244 page.putGlossaryValue("system:message", CofaxToolsUtil.getI18NMessage(req.getLocale(), "incorrectPassword")); 245 page.putGlossaryValue("system:highLightTab", ""); 246 page.putGlossaryValue("querystring", (String ) req.getParameter("querystring")); 247 try { 248 CofaxToolsNavigation.includeResource(page, "" + CofaxToolsServlet.templatePath + "login.jsp", req, res, session); 252 } catch (Exception e) { 253 System.err.println("THERE WAS AN ERROR: " + e); 254 } 255 return (""); 256 } 257 } 258 259 264 public static String login(DataStore db, HttpServletRequest req, HttpSession session, String login, String password, HttpServletResponse res, CofaxPage page) { 265 266 268 HashMap userInfoHash = null; 269 if (loginHandler != null) { 270 userInfoHash = loginHandler.getUserHash(db, login, password); 271 } else { 272 userInfoHash = new HashMap (); 273 } 274 275 return login(db, req, session, userInfoHash, res, page); 276 } 277 278 281 private static String toHex(byte[] digest) { 282 StringBuffer buf = new StringBuffer (); 283 for (int i = 0; i < digest.length; i++) { 284 buf.append(Integer.toHexString(0x0100 + (digest[i] & 0x00ff)).substring(1)); 285 } 286 return buf.toString(); 287 } 288 289 private static String md5Password(String login, String password) { 290 String hash = ""; 291 String md5Password = ""; 292 try { 293 MessageDigest md = MessageDigest.getInstance("MD5"); 294 hash = login + ":" + password; 295 296 byte[] rawPass = hash.getBytes(); 297 try { 298 md.update(rawPass); 299 } catch (Exception e) { 300 CofaxToolsUtil.log("CofaxToolsLogin login : " + e); 301 } 302 md5Password = toHex(md.digest()); 303 } catch (NoSuchAlgorithmException nsae) { 304 CofaxToolsUtil.log("CofaxToolsLogin login : " + nsae); 305 } 306 307 return md5Password; 308 } 309 310 313 public static ILoginHandler getLoginHandler() { 314 return loginHandler; 315 } 316 317 320 public static void setLoginHandler(ILoginHandler login) { 321 loginHandler = login; 322 } 323 324 } | Popular Tags |