1 9 package org.jboss.portal.core.portlet.user; 10 11 import org.jboss.logging.Logger; 12 import org.jboss.portal.common.context.DelegateContext; 13 import org.jboss.portal.common.util.Tools; 14 import org.jboss.portal.core.CoreConstants; 15 import org.jboss.portal.core.model.Role; 16 import org.jboss.portal.core.model.User; 17 import org.jboss.portal.core.modules.*; 18 import org.jboss.portal.core.portlet.PortletHelper; 19 import org.jboss.portal.core.servlet.jsp.PortalJsp; 20 import org.jboss.portal.core.util.Parameters; 21 import org.jboss.portlet.*; 22 23 import javax.naming.InitialContext ; 24 import javax.naming.NamingException ; 25 import javax.portlet.*; 26 import java.io.IOException ; 27 import java.io.PrintWriter ; 28 import java.util.*; 29 30 37 public class UserPortlet 38 extends JBossPortlet 39 { 40 43 public static final Logger log = Logger.getLogger(JBossPortlet.class); 44 45 47 50 public static final String OP_SHOWLOGIN = "showLogin"; 51 52 55 public static final String OP_SHOWREGISTER = "showRegister"; 56 57 60 public static final String OP_SHOWMENU = "showMenu"; 61 62 65 public static final String OP_SHOWPROFILE = "showProfile"; 66 67 70 public static final String OP_SHOWADDROLESTOUSER = "showAddRolesToUser"; 71 72 75 public static final String OP_SHOWLISTUSERS = "showListUsers"; 76 77 private UserModule userModule; 78 private RoleModule roleModule; 79 private MailModule mailModule; 80 private PortletHelper portletHelper; 81 82 87 public void init() 88 throws PortletException 89 { 90 super.init(); 91 try 92 { 93 userModule = (UserModule)new InitialContext ().lookup(ModuleConstants.USERMODULE_JNDINAME); 94 roleModule = (RoleModule)new InitialContext ().lookup(ModuleConstants.ROLEMODULE_JNDINAME); 95 mailModule = (MailModule)new InitialContext ().lookup(ModuleConstants.MAILMODULE_JNDINAME); 96 } 97 catch (NamingException e) 98 { 99 throw new PortletException(e); 100 } 101 102 portletHelper = new PortletHelper(this); 103 } 104 105 public String getDefaultOperation() 106 { 107 return OP_SHOWLOGIN; 108 } 109 110 119 protected void doView(JBossRenderRequest req, JBossRenderResponse resp) 120 throws PortletException, 121 PortletSecurityException, 122 IOException 123 { 124 String op; 125 resp.setContentType("text/html"); 126 PrintWriter writer = resp.getWriter(); 127 128 if ((req.getUser() != null) && (!req.getUser().getEnabled())) 129 { 130 req.getPortletSession().invalidate(); 131 PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("/WEB-INF/jsp/user/login.jsp"); 132 if ("1".equals(getPortletConfig().getInitParameter("useSSL"))) 133 { 134 req.setAttribute("secureURL", req.getURL(Boolean.TRUE, Boolean.TRUE)); 135 } 136 req.setAttribute("URL", req.getURL(Boolean.TRUE, null)); 137 rd.include(req, resp); 138 return; 139 } 140 141 if (req.getRemoteUser() != null) 142 { 143 if (req.getWindowState() != WindowState.MAXIMIZED) 144 { 145 op = OP_SHOWMENU; 146 } 147 else 148 { 149 op = req.getParameters().get(getOperationName(), 150 OP_SHOWMENU); 151 if (op.equals(OP_SHOWLOGIN)) 153 { 154 op = OP_SHOWMENU; 155 } 156 } 157 158 Locale locale = req.getLocale(); 159 ResourceBundle bundle = getResourceBundle(locale); 160 if (OP_SHOWPROFILE.equals(op)) 161 { 162 Integer userid = req.getParameters().getIntObject("userid"); 163 User user = null; 164 if (userid != null) 165 { 166 try 167 { 168 user = userModule.findUserByID(userid); 169 } 170 catch (Exception e) 171 { 172 log.error("Cannot retrive user", e); 173 } 174 } 175 else 176 { 177 user = req.getUser(); 178 } 179 180 if (user == null) 182 { 183 throw new PortletException("Not user object found"); 184 } 185 186 DelegateContext ctx = new DelegateContext(); 188 189 ctx.put("userid", user.getID()); 191 fillContextWithuserProfile(user, ctx); 192 193 DelegateContext timeZoneCtx = null; 195 String selected = req.getParameter("SELECTEDTIMEZONE"); 196 for (int i = 0; i < UserPortletConstants.TIME_ZONE_OFFSETS.length; i++) 197 { 198 if (UserPortletConstants.TIME_ZONE_OFFSETS[i] != null) 199 { 200 timeZoneCtx = ctx.next("timezone"); 201 timeZoneCtx.put("name", UserPortletConstants.TIME_ZONE_OFFSETS[i]); 202 timeZoneCtx.put("id", "" + i); 203 if ((selected != null) && selected.equals("" + i)) 204 { 205 timeZoneCtx.put("selected", "selected"); 206 } 207 } 208 } 209 210 req.setAttribute(PortalJsp.CTX_REQUEST, ctx); 212 resp.setTitle(bundle.getString("REGISTER_PERSONALINFO")); 213 PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("/WEB-INF/jsp/user/editProfile.jsp"); 214 rd.include(req, resp); 215 } 216 else if (OP_SHOWMENU.equals(op)) 217 { 218 DelegateContext ctx = new DelegateContext(); 219 if (req.hasPermission("Admin")) 220 { 221 ctx.next("admin"); 222 } 223 req.setAttribute(PortalJsp.CTX_REQUEST, ctx); 224 PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("/WEB-INF/jsp/user/menu.jsp"); 225 rd.include(req, resp); 226 227 } 228 else if (OP_SHOWLISTUSERS.equals(op)) 229 { 230 if (req.hasPermission("Admin")) 231 { 232 try 233 { 234 int offset = req.getParameters().getInt("offset", 0); 235 int usersPerPage = req.getParameters().getInt("usersperpage", UserPortletConstants.DEFAULT_USERSPERPAGE); 236 String usernameFilter = req.getParameters().get("usernamefilter", ""); 237 238 Set users = null; 242 if (usernameFilter.trim().length() == 0) 243 { 244 users = userModule.findUsers(offset, usersPerPage + 1); 245 } 246 else 247 { 248 users = userModule.findUsersFilteredByUsername(usernameFilter, offset, usersPerPage + 1); 249 } 250 251 User[] usersArray = new User[users.size()]; 252 usersArray = (User[])users.toArray(usersArray); 253 DelegateContext ctx = new DelegateContext(); 254 255 DelegateContext rowCtx = null; 256 for (int i = 0; i < Math.min(usersArray.length, usersPerPage); i++) 257 { 258 int oddeven = i % 2; 259 User user = usersArray[i]; 260 if (oddeven == 0) 261 { 262 rowCtx = ctx.next("row"); 263 } 264 265 rowCtx.put("fullname" + oddeven, getFullName(bundle, user)); 266 rowCtx.put("username" + oddeven, user.getUserName()); 267 268 Iterator itRoles = user.getRoles().iterator(); 270 while (itRoles.hasNext()) 271 { 272 DelegateContext rolesCtx = rowCtx.next("roles" + oddeven); 273 rolesCtx.put("name", ((Role)itRoles.next()).getDisplayName()); 274 } 275 276 PortletURL editURL = resp.createRenderURL(); 277 editURL.setParameter(getOperationName(), OP_SHOWPROFILE); 278 editURL.setParameter("userid", "" + user.getID()); 279 280 PortletURL rolesURL = resp.createRenderURL(); 281 rolesURL.setParameter(getOperationName(), OP_SHOWADDROLESTOUSER); 282 rolesURL.setParameter("userid", "" + user.getID()); 283 284 rowCtx.put("editURL" + oddeven, editURL.toString()); 285 rowCtx.put("rolesURL" + oddeven, rolesURL.toString()); 286 } 287 288 if (offset != 0) 289 { 290 PortletURL previousPageLink = resp.createRenderURL(); 291 previousPageLink.setParameter(getOperationName(), OP_SHOWLISTUSERS); 292 previousPageLink.setParameter("offset", "" + Math.max(0, offset - usersPerPage)); 293 previousPageLink.setParameter("usersperpage", "" + usersPerPage); 294 previousPageLink.setParameter("usernamefilter", usernameFilter); 295 DelegateContext previousCtx = ctx.next("previouspage"); 296 previousCtx.put("link", previousPageLink.toString()); 297 } 298 299 if (usersArray.length > usersPerPage) 300 { 301 PortletURL nextPageLink = resp.createRenderURL(); 302 nextPageLink.setParameter(getOperationName(), OP_SHOWLISTUSERS); 303 nextPageLink.setParameter("offset", "" + (offset + usersPerPage)); 304 nextPageLink.setParameter("usersperpage", "" + usersPerPage); 305 nextPageLink.setParameter("usernamefilter", usernameFilter); 306 DelegateContext nextCtx = ctx.next("nextpage"); 307 nextCtx.put("link", nextPageLink.toString()); 308 } 309 310 ctx.put("usernamefilter", usernameFilter); 311 req.setAttribute(PortalJsp.CTX_REQUEST, ctx); 312 } 313 catch (IllegalArgumentException e) 314 { 315 e.printStackTrace(); 317 } 318 catch (ModuleException e) 319 { 320 e.printStackTrace(); 322 } 323 324 PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("/WEB-INF/jsp/user/listUsers.jsp"); 325 rd.include(req, resp); 326 } 327 } 328 else if (OP_SHOWADDROLESTOUSER.equals(op)) 329 { 330 if (req.hasPermission("Admin")) 331 { 332 DelegateContext ctx = new DelegateContext(); 333 334 try 335 { 336 User user = userModule.findUserByID(req.getParameters().getIntObject("userid")); 337 ctx.put("userid", user.getID()); 338 ctx.put("username", user.getUserName()); 339 ctx.put("userfullname", getFullName(bundle, user)); 340 Set userRoles = user.getRoles(); 341 342 Set roles = roleModule.findRoles(); 343 Role[] rolesArray = new Role[roles.size()]; 344 rolesArray = (Role[])roles.toArray(rolesArray); 345 Role role = null; 346 DelegateContext rowCtx = null; 347 for (int i = 0; i < rolesArray.length; i++) 348 { 349 int oddeven = i % 3; 350 role = rolesArray[i]; 351 if (oddeven == 0) 352 { 353 rowCtx = ctx.next("row"); 354 } 355 356 DelegateContext colCtx = rowCtx.next("col"); 357 if (userRoles.contains(role)) 358 { 359 colCtx.put("ischecked", "checked"); 360 } 361 362 colCtx.put("name", role.getName()); 363 colCtx.put("displayname", role.getDisplayName()); 364 } 365 } 366 catch (IllegalArgumentException e) 367 { 368 e.printStackTrace(); 370 } 371 catch (ModuleException e) 372 { 373 e.printStackTrace(); 375 } 376 377 req.setAttribute(PortalJsp.CTX_REQUEST, ctx); 378 PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("/WEB-INF/jsp/user/editUserRoles.jsp"); 379 rd.include(req, resp); 380 } 381 } 382 else 383 { 384 log.error("This operation does not exist when user is logged in:" + op); 385 } 386 } 387 else 388 { 389 if (req.getWindowState() != WindowState.MAXIMIZED) 391 { 392 op = OP_SHOWLOGIN; 393 } 394 else 395 { 396 op = req.getParameters().get(getOperationName(), OP_SHOWLOGIN); 397 } 398 399 if (OP_SHOWREGISTER.equals(op)) 400 { 401 PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("/WEB-INF/jsp/user/register.jsp"); 402 rd.include(req, resp); 403 } 404 else if (OP_SHOWLOGIN.equals(op)) 405 { 406 PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("/WEB-INF/jsp/user/login.jsp"); 407 if ("1".equals(getPortletConfig().getInitParameter("useSSL"))) 408 { 409 req.setAttribute("secureURL", req.getURL(Boolean.TRUE, Boolean.TRUE)); 410 } 411 req.setAttribute("URL", req.getURL(Boolean.TRUE, null)); 412 rd.include(req, resp); 413 } 414 else 415 { 416 log.error("This operation does not exist when user is not logged in:" + op); 417 } 418 } 419 420 writer.close(); 421 } 422 423 426 public void userLogout(JBossActionRequest req, JBossActionResponse resp) throws IOException 427 { 428 req.signOut(); 429 String contextPath = (String )req.getAttribute(CoreConstants.REQ_ATT_CONTEXT_PATH); 430 String home = contextPath; 431 resp.sendRedirect("/" + home); 432 } 433 434 440 public void userRegister(JBossActionRequest req, JBossActionResponse resp) 441 { 442 String uname = req.getParameter("uname"); 444 int nbErrors = 0; 445 if ((uname == null) || (uname.length() == 0)) 446 { 447 nbErrors++; 448 resp.setRenderParameter("uname_error", "REGISTER_ERROR_INVALIDUSERNAME"); 449 } 450 else 451 { 452 try 453 { 454 User user = userModule.findUserByUserName(uname); 455 if (user != null) 456 { 457 nbErrors++; 458 resp.setRenderParameter("uname_error", "REGISTER_ERROR_EXISTINGUSERNAME"); 459 } 460 } 461 catch (IllegalArgumentException e) 462 { 463 log.error("", e); 464 } 465 catch (ModuleException e) 466 { 467 } 469 } 470 471 String pass1 = req.getParameter("pass1"); 472 if ((pass1 == null) || (pass1.length() == 0)) 473 { 474 nbErrors++; 475 resp.setRenderParameter("pass1_error", "REGISTER_ERROR_INVALIDPASSWORD1"); 476 } 477 478 String pass2 = req.getParameter("pass2"); 479 if ((pass2 == null) || (pass2.length() == 0)) 480 { 481 nbErrors++; 482 resp.setRenderParameter("pass2_error", "REGISTER_ERROR_INVALIDPASSWORD2"); 483 } 484 else if (!pass1.equals(pass2)) 485 { 486 nbErrors++; 487 resp.setRenderParameter("pass2_error", "REGISTER_ERROR_PASSWORDMISMATCH"); 488 } 489 490 String realEmail = req.getParameter("realemail"); 491 if (!Tools.isEmailValid(realEmail)) 492 { 493 nbErrors++; 494 resp.setRenderParameter("realemail_error", "REGISTER_ERROR_INVALIDREALEMAIL"); 495 } 496 497 String fakeEmail = req.getParameter("fakeemail"); 498 String question = req.getParameter("question"); 499 String answer = req.getParameter("answer"); 500 User user = null; 501 if (nbErrors == 0) 502 { 503 try 504 { 505 user = userModule.createUser(uname, Tools.md5AsHexString(pass1), realEmail); 506 user.setFakeEmail(fakeEmail); 507 508 String subscriptionMode = getPortletConfig().getInitParameter(UserPortletConstants.SUBSCRIPTIONMODE); 510 if (subscriptionMode == null) 511 { 512 subscriptionMode = UserPortletConstants.SUBSCRIPTIONMODE_AUTOMATIC; 513 } 514 515 if (UserPortletConstants.SUBSCRIPTIONMODE_AUTOMATIC.equals(subscriptionMode)) 516 { 517 user.setEnabled(true); 518 } 519 520 else if (UserPortletConstants.SUBSCRIPTIONMODE_EMAILVERIFICATION.equals(subscriptionMode)) 521 { 522 user.setEnabled(false); 523 String emailText = generateValidationEmail(req, resp, user, pass1); 524 String from = getPortletConfig().getInitParameter(UserPortletConstants.EMAILFROM); 525 Locale locale = req.getLocale(); 526 ResourceBundle bundle = getResourceBundle(locale); 527 String subject = bundle.getString("REGISTER_CONFIRMATIONEMAIL"); 528 mailModule.send(from, user.getRealEmail(), subject, emailText); 529 } 530 531 537 538 String defaultRole = getPortletConfig().getInitParameter(UserPortletConstants.DEFAULT_ROLE); 540 if (defaultRole != null) 541 { 542 Set roleSet = new HashSet(); 543 Role role = roleModule.findRoleByName(defaultRole); 544 if (role != null) 545 { 546 roleSet.add(role); 547 user.setRoles(roleSet); 548 } 549 else 550 { 551 log.error("The role you specified as default role does not exist, check your portlet configuration"); 552 } 553 } 554 else 555 { 556 log.info("You didn't specify a default role in the portlet init configuration, please refer to the documentation"); 557 } 558 } 559 catch (IllegalArgumentException e) 560 { 561 log.error("Cannot create user " + uname, e); 562 } 563 catch (ModuleException e) 564 { 565 log.error("Cannot create user " + uname, e); 566 } 567 } 568 else 569 { 570 portletHelper.setRenderParameter(resp, "USERNAME", uname); 571 portletHelper.setRenderParameter(resp, "REALEMAIL", realEmail); 572 portletHelper.setRenderParameter(resp, "FAKEEMAIL", fakeEmail); 573 portletHelper.setRenderParameter(resp, "QUESTION", question); 574 portletHelper.setRenderParameter(resp, "ANSWER", answer); 575 portletHelper.setRenderParameter(resp, getOperationName(), OP_SHOWREGISTER); 576 } 577 } 578 579 private void fillContextWithuserProfile(User user, DelegateContext ctx) 580 { 581 ctx.put("GIVENNAME", user.getGivenName()); 582 ctx.put("FAMILYNAME", user.getFamilyName()); 583 ctx.put("REALEMAIL", user.getRealEmail()); 584 ctx.put("FAKEEMAIL", user.getFakeEmail()); 585 ctx.put("VIEWREALEMAIL", user.getViewRealEmail() ? "checked=\"checked\"": ""); 586 ctx.put("HOMEPAGE", (String )(user.getProperties().get(CoreConstants.INFO_USER_HOMEPAGE))); 587 ctx.put("SELECTEDTIMEZONE", (String )user.getProperties().get(CoreConstants.INFO_USER_TIME_ZONE_OFFSET)); 588 ctx.put("ICQ", (String )(user.getProperties().get(CoreConstants.INFO_USER_IM_ICQ))); 589 ctx.put("AIM", (String )(user.getProperties().get(CoreConstants.INFO_USER_IM_AIM))); 590 ctx.put("YIM", (String )(user.getProperties().get(CoreConstants.INFO_USER_IM_YIM))); 591 ctx.put("MSNM", (String )(user.getProperties().get(CoreConstants.INFO_USER_IM_MSNM))); 592 ctx.put("SKYPE", (String )(user.getProperties().get(CoreConstants.INFO_USER_IM_SKYPE))); 593 ctx.put("SIGNATURE", (String )(user.getProperties().get(CoreConstants.INFO_USER_SIGNATURE))); 594 ctx.put("LOCATION", (String )(user.getProperties().get(CoreConstants.INFO_USER_LOCATION))); 595 ctx.put("OCCUPATION", (String )(user.getProperties().get(CoreConstants.INFO_USER_OCCUPATION))); 596 ctx.put("INTERESTS", (String )(user.getProperties().get(CoreConstants.INFO_USER_INTERESTS))); 597 ctx.put("EXTRA", (String )(user.getProperties().get(CoreConstants.INFO_USER_EXTRA))); 598 ctx.put("QUESTION", (String )(user.getProperties().get(CoreConstants.INFO_USER_SECURITY_QUESTION))); 599 ctx.put("ANSWER", (String )(user.getProperties().get(CoreConstants.INFO_USER_SECURITY_ANSWER))); 600 } 601 602 608 public void storeProfile(JBossActionRequest req, JBossActionResponse resp) throws PortletException 609 { 610 User currentUser = req.getUser(); 611 if (currentUser == null) 612 { 613 throw new PortletException("No user"); 614 } 615 616 User user = null; 618 try 619 { 620 Integer userid = req.getParameters().getIntObject("userid"); 621 user = userModule.findUserByID(userid); 622 } 623 catch (Exception e) 624 { 625 throw new PortletException("blah", e); 626 } 627 628 boolean self = currentUser.getID().equals(user.getID()); 630 if (!self && !req.hasPermission("Admin")) 631 { 632 throw new PortletException(); 633 } 634 635 636 int nbErrors = 0; 637 boolean changePassword = false; 638 String givenName = req.getParameter("givenname"); 639 String familyName = req.getParameter("familyname"); 640 String pass1 = req.getParameter("pass1"); 641 String pass2 = req.getParameter("pass2"); 642 if (!(((pass2 == null) || (pass2.length() == 0)) && ((pass1 == null) || (pass1.length() == 0)))) 643 { 644 changePassword = true; 645 if ((pass1 == null) || (pass1.length() == 0)) 646 { 647 nbErrors++; 648 resp.setRenderParameter("pass1_error", "REGISTER_ERROR_INVALIDPASSWORD1"); 649 } 650 651 if ((pass2 == null) || (pass2.length() == 0)) 652 { 653 nbErrors++; 654 resp.setRenderParameter("pass2_error", "REGISTER_ERROR_INVALIDPASSWORD2"); 655 } 656 else if (!pass1.equals(pass2)) 657 { 658 nbErrors++; 659 resp.setRenderParameter("pass2_error", "REGISTER_ERROR_PASSWORDMISMATCH"); 660 } 661 } 662 663 String realEmail = req.getParameter("realemail"); 664 if (!Tools.isEmailValid(realEmail)) 665 { 666 nbErrors++; 667 resp.setRenderParameter("realemail_error", "REGISTER_ERROR_INVALIDREALEMAIL"); 668 } 669 670 String fakeEmail = req.getParameter("fakeemail"); 671 boolean viewRealEmail = req.getParameters().getBoolean("viewrealemail", false); 672 String homepage = req.getParameter("homepage"); 673 short UNDEFINEDTIMEZONE = (short)0; 674 Short timezoneoffset = req.getParameters().getShortObject("timezoneoffset", UNDEFINEDTIMEZONE); 675 String question = req.getParameter("question"); 676 String answer = req.getParameter("answer"); 677 String icq = req.getParameter("icq"); 678 String msnm = req.getParameter("msnm"); 679 String yim = req.getParameter("yim"); 680 String aim = req.getParameter("aim"); 681 String skype = req.getParameter("skype"); 682 String location = req.getParameter("location"); 683 String occupation = req.getParameter("occupation"); 684 String interests = req.getParameter("interests"); 685 String signature = req.getParameter("signature"); 686 String extra = req.getParameter("extra"); 687 688 if (nbErrors == 0) 689 { 690 if (givenName.trim().length() != 0) 691 { 692 user.setGivenName(givenName); 693 } 694 695 if (familyName.trim().length() != 0) 696 { 697 user.setFamilyName(familyName); 698 } 699 700 if (realEmail.trim().length() != 0) 701 { 702 user.setRealEmail(realEmail); 703 } 704 705 if (fakeEmail.trim().length() != 0) 706 { 707 user.setFakeEmail(fakeEmail); 708 } 709 710 user.setViewRealEmail(viewRealEmail); 711 if (changePassword) 712 { 713 user.setPassword(Tools.md5AsHexString(pass1)); 714 } 715 716 putNonEmptyProperty(user, CoreConstants.INFO_USER_HOMEPAGE, homepage); 717 if (timezoneoffset.shortValue() != UNDEFINEDTIMEZONE) 718 { 719 user.getProperties().put(CoreConstants.INFO_USER_TIME_ZONE_OFFSET, timezoneoffset.toString()); 720 } 721 722 putNonEmptyProperty(user, CoreConstants.INFO_USER_SECURITY_QUESTION, question); 723 putNonEmptyProperty(user, CoreConstants.INFO_USER_SECURITY_ANSWER, answer); 724 putNonEmptyProperty(user, CoreConstants.INFO_USER_IM_ICQ, icq); 725 putNonEmptyProperty(user, CoreConstants.INFO_USER_IM_MSNM, msnm); 726 putNonEmptyProperty(user, CoreConstants.INFO_USER_IM_YIM, yim); 727 putNonEmptyProperty(user, CoreConstants.INFO_USER_IM_AIM, aim); 728 putNonEmptyProperty(user, CoreConstants.INFO_USER_IM_SKYPE, skype); 729 putNonEmptyProperty(user, CoreConstants.INFO_USER_SIGNATURE, signature); 730 putNonEmptyProperty(user, CoreConstants.INFO_USER_LOCATION, location); 731 putNonEmptyProperty(user, CoreConstants.INFO_USER_OCCUPATION, occupation); 732 putNonEmptyProperty(user, CoreConstants.INFO_USER_INTERESTS, interests); 733 putNonEmptyProperty(user, CoreConstants.INFO_USER_EXTRA, extra); 734 } 735 else 736 { 737 portletHelper.setRenderParameter(resp, "GIVENNAME", givenName); 738 portletHelper.setRenderParameter(resp, "FAMILYNAME", familyName); 739 portletHelper.setRenderParameter(resp, "REALEMAIL", realEmail); 740 portletHelper.setRenderParameter(resp, "FAKEEMAIL", fakeEmail); 741 if (user.getViewRealEmail()) 742 { 743 portletHelper.setRenderParameter(resp, "VIEWREALEMAIL", "checked=\"checked\""); 744 } 745 else 746 { 747 portletHelper.setRenderParameter(resp, "VIEWREALEMAIL", ""); 748 } 749 750 portletHelper.setRenderParameter(resp, "HOMEPAGE", homepage); 751 portletHelper.setRenderParameter(resp, "SELECTEDTIMEZONE", "" + timezoneoffset); 752 portletHelper.setRenderParameter(resp, "ICQ", icq); 753 portletHelper.setRenderParameter(resp, "AIM", aim); 754 portletHelper.setRenderParameter(resp, "YIM", yim); 755 portletHelper.setRenderParameter(resp, "MSNM", msnm); 756 portletHelper.setRenderParameter(resp, "SKYPE", skype); 757 portletHelper.setRenderParameter(resp, "SIGNATURE", signature); 758 portletHelper.setRenderParameter(resp, "LOCATION", location); 759 portletHelper.setRenderParameter(resp, "OCCUPATION", occupation); 760 portletHelper.setRenderParameter(resp, "INTERESTS", interests); 761 portletHelper.setRenderParameter(resp, "EXTRA", extra); 762 portletHelper.setRenderParameter(resp, getOperationName(), OP_SHOWPROFILE); 763 } 764 } 765 766 772 public void addRolesToUser(JBossActionRequest request, JBossActionResponse response) 773 { 774 if (request.hasPermission("Admin")) 775 { 776 String [] selectedRoles = request.getParameterValues("roles"); 777 Integer userId = request.getParameters().getIntObject("userid"); 778 try 779 { 780 User user = userModule.findUserByID(userId); 781 Set roles = roleModule.findRolesByNames(selectedRoles); 782 user.setRoles(roles); 783 } 784 catch (IllegalArgumentException e) 785 { 786 e.printStackTrace(); 788 } 789 catch (ModuleException e) 790 { 791 e.printStackTrace(); 793 } 794 } 795 } 796 797 802 808 private String generateValidationEmail(JBossActionRequest req, 809 JBossActionResponse resp, 810 User user, 811 String clearPassword) 812 { 813 String hash = Tools.md5AsHexString(user.getUserName() + user.getPassword() + UserPortletConstants.SALT); 815 816 String rootURL = getPortletConfig().getInitParameter("emailDomain"); 817 818 PortletURL link = resp.createActionURL(); 819 link.setParameter("op", "activate"); 820 link.setParameter(UserPortletConstants.USERID, "" + user.getID()); 821 link.setParameter(UserPortletConstants.HASH, hash); 822 823 String absURL = resp.createAbsoluteURL(link); 824 825 StringBuffer sb = new StringBuffer (); 828 Locale locale = req.getLocale(); 829 ResourceBundle bundle = getResourceBundle(locale); 830 try 831 { 832 sb.append(bundle.getString("VALIDATIONEMAIL_1") + " - "); 833 sb.append(rootURL); 834 sb.append("\n\n"); 835 sb.append(bundle.getString("VALIDATIONEMAIL_2") + ":\n\n"); 836 sb.append("----------------------------\n"); 837 sb.append(bundle.getString("USERNAME") + ": " + user.getUserName() + "\n"); 838 sb.append(bundle.getString("PASSWORD") + ": " + clearPassword + "\n"); 839 sb.append("----------------------------\n\n"); 840 sb.append(bundle.getString("VALIDATIONEMAIL_3") + ": \n"); 841 sb.append(absURL); 842 sb.append("\n\n"); 843 sb.append(bundle.getString("VALIDATIONEMAIL_4")); 844 sb.append("\n\n"); 845 sb.append(bundle.getString("VALIDATIONEMAIL_5") + "\n"); 846 } 847 catch (Exception e) 848 { 849 log.error("Cannot generate an email notification", e); 850 } 851 852 return sb.toString(); 853 } 854 855 861 public void activate(JBossActionRequest req, 862 JBossActionResponse resp) 863 { 864 String hash = req.getParameter(UserPortletConstants.HASH); 865 Integer userId = req.getParameters().getIntObject(UserPortletConstants.USERID, -1); 866 867 User user = null; 868 try 869 { 870 user = userModule.findUserByID(userId); 871 String hexCompare = Tools.md5AsHexString(user.getUserName() + user.getPassword() + UserPortletConstants.SALT); 872 if (hash.equals(hexCompare)) 873 { 874 user.setEnabled(true); 875 portletHelper.setI18nRenderParameter(req, resp, UserPortletConstants.INFOMESSAGE, "INFOMESSAGE_CONGRATULATIONACTIVATED"); 876 } 877 else 878 { 879 portletHelper.setI18nRenderParameter(req, resp, UserPortletConstants.ERRORMESSAGE, "ERRORMESSAGE_UNABLEACTIVATE"); 880 } 881 } 882 catch (Exception e) 883 { 884 portletHelper.setI18nRenderParameter(req, resp, UserPortletConstants.ERRORMESSAGE, "ERRORMESSAGE_UNABLEACTIVATE"); 885 } 886 } 887 888 private String getFullName(ResourceBundle bundle, 889 User user) 890 { 891 if ((user.getGivenName() != null) && (user.getGivenName().trim().length() != 0)) 892 { 893 if ((user.getFamilyName() != null) && (user.getFamilyName().trim().length() != 0)) 894 { 895 return user.getGivenName() + " " + user.getFamilyName(); 896 } 897 else 898 { 899 return user.getGivenName().trim(); 900 } 901 } 902 else 903 { 904 if ((user.getFamilyName() != null) && (user.getFamilyName().trim().length() != 0)) 905 { 906 return user.getFamilyName().trim(); 907 } 908 else 909 { 910 return bundle.getString("NAMENOTAVAILABLE"); 911 } 912 } 913 } 914 915 private void putNonEmptyProperty(User user, String key, String value) 916 { 917 if ((value != null) && (value.trim().length() != 0)) 918 { 919 user.getProperties().put(key, value); 920 } 921 } 922 923 940 } | Popular Tags |