001: package com.ice.jcvsweb.action;
002:
003: import java.io.IOException;
004: import java.util.ArrayList;
005:
006: import javax.servlet.ServletConfig;
007: import javax.servlet.ServletContext;
008: import javax.servlet.ServletException;
009: import javax.servlet.http.HttpServlet;
010: import javax.servlet.http.HttpServletRequest;
011: import javax.servlet.http.HttpServletResponse;
012: import javax.servlet.http.HttpSession;
013:
014: import org.apache.struts.action.ActionError;
015: import org.apache.struts.action.ActionErrors;
016: import org.apache.struts.action.ActionForm;
017: import org.apache.struts.action.ActionForward;
018: import org.apache.struts.action.ActionMapping;
019:
020: import com.ice.jcvsweb.bean.JCVSUser;
021: import com.ice.jcvsweb.bean.JCVSError;
022: import com.ice.jcvsweb.form.EditUserForm;
023: import com.ice.jcvsweb.helper.ContextHelper;
024: import com.ice.jcvsweb.helper.CryptoHelper;
025: import com.ice.jcvsweb.manager.JCVSUserManager;
026:
027: public class SaveUser extends JCVSAction {
028: public ActionForward execute(ActionMapping mapping,
029: ActionForm form, HttpServletRequest request,
030: HttpServletResponse response) throws Exception {
031: ActionForward result = null;
032: String forwardName = "failure";
033: HttpSession session = request.getSession();
034: ServletContext ctx = session.getServletContext();
035: JCVSUser user = this .establishUser(request);
036: JCVSUserManager userMgr = this .getUserManager(ctx);
037:
038: EditUserForm userForm = (EditUserForm) form;
039:
040: String userName = userForm.getUserName();
041:
042: JCVSUser editUser = userMgr.getUser(userName);
043:
044: request.removeAttribute("jcvsSaveUserFailed");
045:
046: if (user == null) {
047: JCVSError err = new JCVSError();
048: err.setException(new Throwable("NULL USER"));
049: err.setTitle("FATAL The user is not established.");
050: this .postAndLogError(request, err);
051: } else if (userForm == null) {
052: JCVSError err = new JCVSError();
053: err.setException(new Throwable("FATAL NULL FORM"));
054: err.setTitle("FATAL EditUserForm does is null.");
055: this .postAndLogError(request, err);
056: } else if (!user.getIsAdmin()
057: && !userName.equals(user.getName())) {
058: forwardName = "notallowed";
059: this
060: .setReasonMessage(
061: request,
062: "You are not the owner of this account, "
063: + "and you are not the site administrator.");
064: } else {
065: boolean doSave = true;
066: this .setEditMode(request, true);
067: String clearPass = userForm.getPassword().trim();
068:
069: if (clearPass != null && clearPass.length() > 0) {
070: String confirmPass = userForm.getPassConfirm().trim();
071: if (confirmPass.equals(clearPass)) {
072: String cryptPass = CryptoHelper
073: .cryptPassword(clearPass);
074: editUser.setPassword(cryptPass);
075: } else {
076: doSave = false;
077: forwardName = "edituser";
078: request.setAttribute("jcvsSaveUserFailed",
079: "The two passwords do not match.");
080: }
081: }
082:
083: if (doSave) {
084: editUser.setFullName(userForm.getFullName().trim());
085: editUser.setEmail(userForm.getEmail().trim());
086: editUser.setImService(userForm.getImService().trim());
087: editUser.setImAlias(userForm.getImAlias().trim());
088: editUser.setHomePage(userForm.getHomePage().trim());
089: editUser.setFavoritePage(userForm.getFavoritePage()
090: .trim());
091: editUser.setIsBlocked(userForm.getIsBlocked());
092:
093: try {
094: userMgr.saveUser(editUser);
095: request.setAttribute("jcvsProfile", editUser);
096:
097: if (user.getName().equals(editUser.getName())) {
098: // The user is editting, go to homepage.
099: //
100: forwardName = "myhome";
101: } else {
102: // An admin is editting, go to profile.
103: //
104: // result = new ActionForward
105: // ( "/profile/" + editUser.getName(), true );
106: request.setAttribute("jcvsProfile", editUser);
107: forwardName = "profile";
108: }
109: } catch (IOException ex) {
110: JCVSError err = new JCVSError();
111: err.setException(ex);
112: err.setTitle("Error saving configuration.");
113: err
114: .setShortMessage("An error occurred while saving the "
115: + "user's configuration file.");
116: this.postError(request, err);
117: }
118: }
119: }
120:
121: return (result == null ? mapping.findForward(forwardName)
122: : result);
123: }
124:
125: }
|