1 31 32 package org.opencms.workplace.tools.accounts; 33 34 import org.opencms.file.CmsUser; 35 import org.opencms.jsp.CmsJspActionElement; 36 import org.opencms.main.CmsException; 37 import org.opencms.security.CmsPasswordInfo; 38 import org.opencms.util.CmsStringUtil; 39 import org.opencms.util.CmsUUID; 40 import org.opencms.widgets.CmsCheckboxWidget; 41 import org.opencms.widgets.CmsDisplayWidget; 42 import org.opencms.widgets.CmsInputWidget; 43 import org.opencms.widgets.CmsPasswordWidget; 44 import org.opencms.widgets.CmsTextareaWidget; 45 import org.opencms.workplace.CmsDialog; 46 import org.opencms.workplace.CmsWidgetDialog; 47 import org.opencms.workplace.CmsWidgetDialogParameter; 48 import org.opencms.workplace.CmsWorkplaceSettings; 49 import org.opencms.workplace.tools.CmsToolManager; 50 51 import java.util.ArrayList ; 52 import java.util.HashMap ; 53 import java.util.List ; 54 import java.util.Map ; 55 56 import javax.servlet.http.HttpServletRequest ; 57 58 67 public abstract class A_CmsEditUserDialog extends CmsWidgetDialog { 68 69 70 public static final String KEY_PREFIX = "user"; 71 72 73 public static final String [] PAGES = {"page1"}; 74 75 76 public static final String PARAM_USERID = "userid"; 77 78 79 private static final Object PWD_OBJECT = "PWD_INFO"; 80 81 82 private static final Object USER_OBJECT = "USER"; 83 84 85 protected CmsUser m_user; 86 87 88 private String m_paramUserid; 89 90 91 private CmsPasswordInfo m_pwdInfo; 92 93 98 public A_CmsEditUserDialog(CmsJspActionElement jsp) { 99 100 super(jsp); 101 } 102 103 106 public void actionCommit() { 107 108 List errors = new ArrayList (); 109 110 try { 111 if (CmsStringUtil.isNotEmpty(m_pwdInfo.getNewPwd())) { 113 m_pwdInfo.setConfirmation(m_pwdInfo.getConfirmation()); 114 } 115 if (m_user.getId() == null) { 117 CmsUser newUser = createUser( 118 m_user.getName(), 119 m_pwdInfo.getNewPwd(), 120 m_user.getDescription(), 121 m_user.getAdditionalInfo()); 122 newUser.setFirstname(m_user.getFirstname()); 123 newUser.setLastname(m_user.getLastname()); 124 newUser.setEmail(m_user.getEmail()); 125 newUser.setAddress(m_user.getAddress()); 126 m_user = newUser; 127 } else if (CmsStringUtil.isNotEmpty(m_pwdInfo.getNewPwd())) { 128 if (!m_pwdInfo.getNewPwd().equals(m_pwdInfo.getConfirmation())) { 129 m_pwdInfo.setConfirmation(null); 130 } 131 getCms().setPassword(m_user.getName(), m_pwdInfo.getNewPwd()); 132 } 133 writeUser(m_user); 135 Map objects = (Map )getSettings().getListObject(); 137 if (objects != null) { 138 objects.remove(getListClass()); 139 } 140 } catch (Throwable t) { 141 errors.add(t); 142 } 143 144 if (errors.isEmpty() && isNewUser()) { 145 if (getParamCloseLink() != null && getParamCloseLink().indexOf("path=" + getListRootPath()) > -1) { 146 Map argMap = new HashMap (); 148 argMap.put("userid", m_user.getId()); 149 argMap.put("username", m_user.getName()); 150 setParamCloseLink(CmsToolManager.linkForToolPath(getJsp(), getListRootPath() + "/edit", argMap)); 151 } 152 } 153 setCommitErrors(errors); 155 } 156 157 162 public String getParamUserid() { 163 164 return m_paramUserid; 165 } 166 167 172 public void setParamUserid(String userId) { 173 174 m_paramUserid = userId; 175 } 176 177 185 protected String createDialogHtml(String dialog) { 186 187 StringBuffer result = new StringBuffer (1024); 188 189 result.append(createWidgetTableStart()); 190 result.append(createWidgetErrorHeader()); 192 193 if (dialog.equals(PAGES[0])) { 194 result.append(dialogBlockStart(key(Messages.GUI_USER_EDITOR_LABEL_IDENTIFICATION_BLOCK_0))); 196 result.append(createWidgetTableStart()); 197 result.append(createDialogRowsHtml(0, 4)); 198 result.append(createWidgetTableEnd()); 199 result.append(dialogBlockEnd()); 200 result.append(dialogBlockStart(key(Messages.GUI_USER_EDITOR_LABEL_ADDRESS_BLOCK_0))); 201 result.append(createWidgetTableStart()); 202 result.append(createDialogRowsHtml(5, 8)); 203 result.append(createWidgetTableEnd()); 204 result.append(dialogBlockEnd()); 205 result.append(dialogBlockStart(key(Messages.GUI_USER_EDITOR_LABEL_AUTHENTIFICATION_BLOCK_0))); 206 result.append(createWidgetTableStart()); 207 if (isPwdChangeAllowed(m_user)) { 208 result.append(createDialogRowsHtml(9, 11)); 209 } else { 210 result.append(createDialogRowsHtml(9, 9)); 211 } 212 result.append(createWidgetTableEnd()); 213 result.append(dialogBlockEnd()); 214 } 215 216 result.append(createWidgetTableEnd()); 217 return result.toString(); 218 } 219 220 232 protected abstract CmsUser createUser(String name, String pwd, String desc, Map info) throws CmsException; 233 234 237 protected void defineWidgets() { 238 239 initUserObject(); 241 242 setKeyPrefix(KEY_PREFIX); 243 244 if (m_user.getId() == null && isEditable(m_user)) { 246 addWidget(new CmsWidgetDialogParameter(m_user, "name", PAGES[0], new CmsInputWidget())); 247 } else { 248 addWidget(new CmsWidgetDialogParameter(m_user, "name", PAGES[0], new CmsDisplayWidget())); 249 } 250 if (isEditable(m_user)) { 251 addWidget(new CmsWidgetDialogParameter(m_user, "description", "", PAGES[0], new CmsTextareaWidget(), 0, 1)); 252 addWidget(new CmsWidgetDialogParameter(m_user, "lastname", PAGES[0], new CmsInputWidget())); 253 addWidget(new CmsWidgetDialogParameter(m_user, "firstname", PAGES[0], new CmsInputWidget())); 254 addWidget(new CmsWidgetDialogParameter(m_user, "email", PAGES[0], new CmsInputWidget())); 255 addWidget(new CmsWidgetDialogParameter(m_user, "address", "", PAGES[0], new CmsInputWidget(), 0, 1)); 256 addWidget(new CmsWidgetDialogParameter(m_user, "zipcode", "", PAGES[0], new CmsInputWidget(), 0, 1)); 257 addWidget(new CmsWidgetDialogParameter(m_user, "city", "", PAGES[0], new CmsInputWidget(), 0, 1)); 258 addWidget(new CmsWidgetDialogParameter(m_user, "country", "", PAGES[0], new CmsInputWidget(), 0, 1)); 259 } else { 260 addWidget(new CmsWidgetDialogParameter(m_user, "description", PAGES[0], new CmsDisplayWidget())); 261 addWidget(new CmsWidgetDialogParameter(m_user, "lastname", PAGES[0], new CmsDisplayWidget())); 262 addWidget(new CmsWidgetDialogParameter(m_user, "firstname", PAGES[0], new CmsDisplayWidget())); 263 addWidget(new CmsWidgetDialogParameter(m_user, "email", PAGES[0], new CmsDisplayWidget())); 264 addWidget(new CmsWidgetDialogParameter(m_user, "address", PAGES[0], new CmsDisplayWidget())); 265 addWidget(new CmsWidgetDialogParameter(m_user, "zipcode", PAGES[0], new CmsDisplayWidget())); 266 addWidget(new CmsWidgetDialogParameter(m_user, "city", PAGES[0], new CmsDisplayWidget())); 267 addWidget(new CmsWidgetDialogParameter(m_user, "country", PAGES[0], new CmsDisplayWidget())); 268 } 269 addWidget(new CmsWidgetDialogParameter(m_user, "enabled", PAGES[0], new CmsCheckboxWidget())); 270 if (isPwdChangeAllowed(m_user)) { 271 addWidget(new CmsWidgetDialogParameter(m_pwdInfo, "newPwd", PAGES[0], new CmsPasswordWidget())); 272 addWidget(new CmsWidgetDialogParameter(m_pwdInfo, "confirmation", PAGES[0], new CmsPasswordWidget())); 273 } 274 } 275 276 281 protected abstract String getListClass(); 282 283 288 protected abstract String getListRootPath(); 289 290 293 protected String [] getPageArray() { 294 295 return PAGES; 296 } 297 298 301 protected void initMessages() { 302 303 addMessages(Messages.get().getBundleName()); 305 super.initMessages(); 307 } 308 309 318 protected void initUserObject() { 319 320 Object o = null; 321 322 try { 323 if (CmsStringUtil.isEmpty(getParamAction()) || CmsDialog.DIALOG_INITIAL.equals(getParamAction())) { 324 m_user = getCms().readUser(new CmsUUID(getParamUserid())); 326 m_pwdInfo = new CmsPasswordInfo(); 327 return; 328 } else { 329 o = getDialogObject(); 331 Map dialogObject = (Map )o; 332 m_user = (CmsUser)dialogObject.get(USER_OBJECT); 333 m_pwdInfo = (CmsPasswordInfo)dialogObject.get(PWD_OBJECT); 334 m_user.getId(); 336 return; 337 } 338 } catch (Exception e) { 339 } 341 m_user = new CmsUser(); 343 m_pwdInfo = new CmsPasswordInfo(); 344 } 345 346 349 protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) { 350 351 super.initWorkplaceRequestValues(settings, request); 353 354 Map dialogObject = new HashMap (); 356 dialogObject.put(USER_OBJECT, m_user); 357 dialogObject.put(PWD_OBJECT, m_pwdInfo); 358 setDialogObject(dialogObject); 359 360 } 361 362 371 protected abstract boolean isEditable(CmsUser user); 372 373 380 protected boolean isPwdChangeAllowed(CmsUser user) { 381 382 return user == user; } 384 385 388 protected void validateParamaters() throws Exception { 389 390 if (!isNewUser()) { 391 getCms().readUser(new CmsUUID(getParamUserid())).getName(); 393 } 394 } 395 396 403 protected abstract void writeUser(CmsUser user) throws CmsException; 404 405 410 private boolean isNewUser() { 411 412 return getCurrentToolPath().equals(getListRootPath() + "/new"); 413 } 414 } | Popular Tags |