1 18 19 package org.apache.roller.ui.admin.struts.actions; 20 21 import java.io.IOException ; 22 import java.text.MessageFormat ; 23 import java.util.ArrayList ; 24 import java.util.List ; 25 26 import javax.servlet.ServletException ; 27 import javax.servlet.http.HttpServletRequest ; 28 import javax.servlet.http.HttpServletResponse ; 29 30 import org.apache.commons.logging.Log; 31 import org.apache.commons.logging.LogFactory; 32 import org.apache.roller.ui.core.struts.actions.UserBaseAction; 33 import org.apache.struts.action.ActionError; 34 import org.apache.struts.action.ActionErrors; 35 import org.apache.struts.action.ActionForm; 36 import org.apache.struts.action.ActionForward; 37 import org.apache.struts.action.ActionMapping; 38 import org.apache.struts.action.ActionMessage; 39 import org.apache.struts.action.ActionMessages; 40 import org.apache.roller.RollerException; 41 import org.apache.roller.model.IndexManager; 42 import org.apache.roller.model.Roller; 43 import org.apache.roller.model.RollerFactory; 44 import org.apache.roller.model.UserManager; 45 import org.apache.roller.pojos.UserData; 46 import org.apache.roller.ui.core.BasePageModel; 47 import org.apache.roller.ui.core.RollerRequest; 48 import org.apache.roller.ui.core.RollerSession; 49 import org.apache.roller.ui.admin.struts.formbeans.UserAdminForm; 50 import org.apache.commons.lang.StringUtils; 51 52 53 62 public final class UserAdminAction extends UserBaseAction { 63 private static Log mLogger = 64 LogFactory.getFactory().getInstance(UserAdminAction.class); 65 66 71 public ActionForward edit( 72 ActionMapping mapping, 73 ActionForm actionForm, 74 HttpServletRequest request, 75 HttpServletResponse response) 76 throws IOException , ServletException { 77 ActionForward forward = mapping.findForward("adminUser.page"); 78 try { 79 UserData user = null; 80 RollerRequest rreq = RollerRequest.getRollerRequest(request); 81 RollerSession rollerSession = RollerSession.getRollerSession(request); 82 if (rollerSession.isGlobalAdminUser() ) { 83 UserAdminForm userForm = (UserAdminForm)actionForm; 84 UserManager mgr = RollerFactory.getRoller().getUserManager(); 85 if (userForm!=null 86 && userForm.getUserName()!=null && !userForm.isNewUser()) { 87 ActionMessages msgs = getErrors(request); 88 msgs = (msgs == null) ? new ActionMessages() : msgs; 89 user = mgr.getUserByUserName(userForm.getUserName(), null); 90 if (user != null) { 91 userForm.copyFrom(user, request.getLocale()); 92 userForm.setPasswordText(null); 94 userForm.setPasswordConfirm(null); 95 } else { 96 msgs.add(ActionErrors.GLOBAL_ERROR, 97 new ActionMessage("userAdmin.invalidNewUserName")); 98 userForm.setUserName(""); 99 } 100 if (request.getSession().getAttribute("cookieLogin")!=null) { 101 msgs.add(ActionErrors.GLOBAL_ERROR, 104 new ActionMessage("userAdmin.cookieLogin")); 105 } 106 saveErrors(request, msgs); 107 } 108 request.setAttribute("model", new UserAdminPageModel( 109 request, response, mapping, userForm, user)); 110 } else { 111 forward = mapping.findForward("access-denied"); 112 } 113 } catch (Exception e) { 114 mLogger.error("ERROR in action",e); 115 throw new ServletException (e); 116 } 117 return forward; 118 } 119 120 124 public ActionForward update( 125 ActionMapping mapping, 126 ActionForm actionForm, 127 HttpServletRequest request, 128 HttpServletResponse response) 129 throws IOException , ServletException { 130 ActionForward forward = mapping.findForward("adminUser.page"); 131 ActionMessages msgs = new ActionMessages(); 132 try { 133 RollerRequest rreq = RollerRequest.getRollerRequest(request); 134 RollerSession rollerSession = 135 RollerSession.getRollerSession(request); 136 if (rollerSession.isGlobalAdminUser() ) { 137 UserManager mgr = RollerFactory.getRoller().getUserManager(); 138 UserAdminForm userForm = (UserAdminForm)actionForm; 139 140 if (userForm.isNewUser()) { 141 UserData user = new UserData(); 142 userForm.copyTo(user, request.getLocale()); 143 user.setId(null); 144 user.setDateCreated(new java.util.Date ()); 145 user.setEnabled(Boolean.TRUE); 146 147 msgs = validate(userForm, msgs); 149 150 if ( !StringUtils.isEmpty(userForm.getPasswordText()) 152 && !StringUtils.isEmpty(userForm.getPasswordConfirm())) { 153 try { 154 user.resetPassword(RollerFactory.getRoller(), 155 userForm.getPasswordText(), 156 userForm.getPasswordConfirm()); 157 } catch (RollerException e) { 158 msgs.add(ActionErrors.GLOBAL_ERROR, 159 new ActionError("userSettings.passwordResetError")); 160 } 161 } else { 162 msgs.add(ActionErrors.GLOBAL_ERROR, 163 new ActionError("userSettings.needPasswordTwice")); 164 } 165 166 if (msgs.isEmpty()) { 168 try { 169 mgr.addUser(user); 171 RollerFactory.getRoller().flush(); 172 173 msgs.add(ActionMessages.GLOBAL_MESSAGE, 174 new ActionMessage("userSettings.saved")); 175 saveMessages(request, msgs); 176 177 userForm.setUserName(null); 179 userForm.setNewUser((false)); 180 181 } catch (RollerException e) { 182 msgs.add(ActionErrors.GLOBAL_ERROR, 184 new ActionError(e.getMessage())); 185 saveErrors(request, msgs); 186 } 187 } else { 188 saveErrors(request, msgs); 189 } 190 return edit(mapping, actionForm, request, response); 191 192 } else { 193 194 UserData user = mgr.getUser(userForm.getId()); 195 userForm.copyTo(user, request.getLocale()); 196 197 msgs = validate(userForm, msgs); 199 200 if ( !StringUtils.isEmpty(userForm.getPasswordText()) 202 && !StringUtils.isEmpty(userForm.getPasswordConfirm())) { 203 try { 204 user.resetPassword(RollerFactory.getRoller(), 205 userForm.getPasswordText(), 206 userForm.getPasswordConfirm()); 207 } catch (RollerException e) { 208 msgs.add(ActionErrors.GLOBAL_ERROR, 209 new ActionMessage( 210 "userSettings.passwordResetError")); 211 } 212 } else if (!StringUtils.isEmpty(userForm.getPasswordText()) 213 || !StringUtils.isEmpty(userForm.getPasswordConfirm())) { 214 msgs.add(ActionErrors.GLOBAL_ERROR, 216 new ActionMessage( 217 "userSettings.needPasswordTwice")); 218 } 219 220 if (msgs.isEmpty()) { 221 try { 222 mgr.saveUser(user); 224 RollerFactory.getRoller().flush(); 225 226 msgs.add(ActionMessages.GLOBAL_MESSAGE, 227 new ActionMessage("userSettings.saved")); 228 saveMessages(request, msgs); 229 230 userForm.setUserName(null); 232 233 } catch (RollerException e) { 234 msgs.add(ActionErrors.GLOBAL_ERROR, 235 new ActionMessage(e.getMessage())); 236 saveErrors(request, msgs); 237 } 238 } else { 239 saveErrors(request, msgs); 240 } 241 } 242 243 return edit(mapping, actionForm, request, response); 244 } else { 245 forward = mapping.findForward("access-denied"); 246 } 247 } catch (Exception e) { 248 mLogger.error("ERROR in action",e); 249 throw new ServletException (e); 250 } 251 return forward; 252 } 253 254 258 public ActionForward cancel( 259 ActionMapping mapping, 260 ActionForm actionForm, 261 HttpServletRequest request, 262 HttpServletResponse response) 263 throws IOException , ServletException { 264 UserAdminForm userForm = (UserAdminForm)actionForm; 265 userForm.setUserName(null); 266 userForm.setNewUser(false); 267 return edit(mapping, actionForm, request, response); 268 } 269 270 274 public ActionForward newUser( 275 ActionMapping mapping, 276 ActionForm actionForm, 277 HttpServletRequest request, 278 HttpServletResponse response) 279 throws IOException , ServletException { 280 UserAdminForm userForm = (UserAdminForm)actionForm; 281 userForm.setNewUser(true); 282 userForm.setEnabled(Boolean.TRUE); 283 return edit(mapping, actionForm, request, response); 284 } 285 286 290 public ActionForward index( 291 ActionMapping mapping, 292 ActionForm actionForm, 293 HttpServletRequest request, 294 HttpServletResponse response) 295 throws IOException , ServletException { 296 try { 297 RollerRequest rreq = RollerRequest.getRollerRequest(request); 298 RollerSession rollerSession = RollerSession.getRollerSession(request); 299 if (rollerSession.isGlobalAdminUser() ) { 300 UserAdminForm uaf = (UserAdminForm)actionForm; 301 302 IndexManager manager = RollerFactory.getRoller().getIndexManager(); 304 manager.rebuildWebsiteIndex(); 305 request.getSession().setAttribute( 306 RollerSession.STATUS_MESSAGE, 307 "Successfully scheduled rebuild of index for"); 308 } 309 } catch (Exception e) { 310 mLogger.error("ERROR in action",e); 311 throw new ServletException (e); 312 } 313 return edit(mapping, actionForm, request, response); 314 } 315 316 public class UserAdminPageModel extends BasePageModel { 317 private UserAdminForm userAdminForm = null; 318 private List permissions = new ArrayList (); 319 320 public UserAdminPageModel( 321 HttpServletRequest request, 322 HttpServletResponse response, 323 ActionMapping mapping, 324 UserAdminForm form, 325 UserData user) throws RollerException { 326 super("dummy", request, response, mapping); 327 userAdminForm = form; 328 329 if (user != null) { 330 Roller roller = RollerFactory.getRoller(); 331 permissions = roller.getUserManager().getAllPermissions(user); 332 } 333 } 334 public String getTitle() { 335 if (StringUtils.isEmpty(userAdminForm.getUserName()) && userAdminForm.isNewUser()) { 336 return bundle.getString("userAdmin.title.createNewUser"); 337 } else if (StringUtils.isEmpty(userAdminForm.getUserName())) { 338 return bundle.getString("userAdmin.title.searchUser"); 339 } 340 return MessageFormat.format( 341 bundle.getString("userAdmin.title.editUser"), 342 new Object [] { userAdminForm.getUserName() } ); 343 } 344 public List getPermissions() { 345 return permissions; 346 } 347 public void setPermissions(List permissions) { 348 this.permissions = permissions; 349 } 350 } 351 } 352 353 | Popular Tags |