Author: bbrossaud Date: 2010-06-21 18:22:07 +0200 (Mon, 21 Jun 2010) New Revision: 75 Url: http://chorem.org/repositories/revision/bow/75 Log: addition user migration and removed bug, mail is send after registeration and when the user informations are changed Added: trunk/src/main/java/org/chorem/bow/UserMigration.java Modified: trunk/src/main/java/org/chorem/bow/BowProxy.java trunk/src/main/java/org/chorem/bow/ControllerServlet.java trunk/src/main/xmi/bow.zargo Modified: trunk/src/main/java/org/chorem/bow/BowProxy.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BowProxy.java 2010-06-21 13:48:25 UTC (rev 74) +++ trunk/src/main/java/org/chorem/bow/BowProxy.java 2010-06-21 16:22:07 UTC (rev 75) @@ -14,12 +14,14 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. *##%*/ - package org.chorem.bow; - +import java.util.Arrays; +import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.wikitty.WikittyExtension; +import org.nuiton.wikitty.WikittyExtensionMigration; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.WikittyService; import org.nuiton.wikitty.WikittyServiceCached; @@ -39,20 +41,27 @@ /** to use log facility, just put in your code: log.info(\"...\"); */ static private Log log = LogFactory.getLog(BowProxy.class); - static protected BowProxy instance; synchronized static public BowProxy getInstance() { if (instance == null) { BowConfig config = BowConfig.getInstance(); instance = new BowProxy(config); + WikittyExtensionMigration.migrationRegistry.put(User.EXT_USER, new UserMigration()); } return instance; } protected BowProxy(BowConfig config) { + List<WikittyExtension> extensions = Arrays.asList( + UserImpl.extensionUser, + PreferenceImpl.extensionPreference, + BookmarkImpl.extensionBookmark, + TokenImpl.extensionToken); WikittyService ws = new WikittyServiceJDBC(config.getFlatOptions()); ws = new WikittyServiceCached(ws); + String token = super.getSecurityToken(); + ws.storeExtension(token, extensions); setWikittyService(ws); } } Modified: trunk/src/main/java/org/chorem/bow/ControllerServlet.java =================================================================== --- trunk/src/main/java/org/chorem/bow/ControllerServlet.java 2010-06-21 13:48:25 UTC (rev 74) +++ trunk/src/main/java/org/chorem/bow/ControllerServlet.java 2010-06-21 16:22:07 UTC (rev 75) @@ -136,8 +136,7 @@ if (log.isDebugEnabled()) { log.debug("Going to actionSendPassword"); } - this.actionSendPassword(request); - request.getRequestDispatcher("login.jsp").forward(request, response); + this.actionSendPassword(request, response); } else if (action.equals("modifyBookmark") && user != null) { if (log.isDebugEnabled()) { log.debug("Going to actionModif"); @@ -663,18 +662,18 @@ * @description check if the registration is correct or not */ protected void actionRegister(HttpServletRequest request, HttpServletResponse response, HttpSession session) - throws IOException, ServletException, NoSuchAlgorithmException { + throws IOException, ServletException, NoSuchAlgorithmException, AddressException, MessagingException { String email = request.getParameter("email"); String password = request.getParameter("password"); - password = StringUtil.encodeMD5(password); - if (this.checkRegister(email, password)) { // check if all is well + String md5 = StringUtil.encodeMD5(password); + if (this.checkRegister(email, md5)) { // check if all is well String error = "Email and password must be correctly filled"; request.setAttribute("msgError", error); request.getRequestDispatcher("register.jsp").forward(request, response); } else { WikittyProxy proxy = BowProxy.getInstance(); UserImpl newUser = new UserImpl(); - newUser.setPassword(password); + newUser.setPassword(md5); newUser.setEmail(email); User login = proxy.store((User) newUser); // store the new user if (login == null) { @@ -685,6 +684,7 @@ session.setAttribute("preference", preference); initializeToken(session, login); actionHome(request, login); + sendMail(email, password); request.getRequestDispatcher("main.jsp").forward(request, response); } } @@ -981,18 +981,10 @@ } private void actionChangePreferences(HttpServletRequest request, HttpSession session, User user) - throws NoSuchAlgorithmException { + throws NoSuchAlgorithmException, AddressException, MessagingException { + WikittyProxy proxy = BowProxy.getInstance(); String email = request.getParameter("email"); String password = request.getParameter("password"); - if (email != null && !email.isEmpty()) { - user.setEmail(email); - } - if (password != null && !password.isEmpty()) { - password = StringUtil.encodeMD5(password); - user.setPassword(password); - } - - WikittyProxy proxy = BowProxy.getInstance(); Preference preference = (Preference) session.getAttribute("preference"); String colors = request.getParameter("colors"); preference.setColors(colors); @@ -1006,6 +998,18 @@ preference.setSearchEngineUrlResults(searchEngineResults); proxy.store(preference); + User newUser = proxy.restore(User.class, user.getWikittyId()); + if (email != null && !email.isEmpty()) { + newUser.setEmail(email); + } + if (password != null && !password.isEmpty()) { + String md5 = StringUtil.encodeMD5(password); + newUser.setPassword(md5); + sendMail(newUser.getEmail(), password); + } + proxy.store(newUser); + session.setAttribute("user", newUser); + preference = proxy.restore(Preference.class, newUser.getWikittyId()); request.setAttribute("preference", preference); } @@ -1033,7 +1037,8 @@ msg.setSubject(messageSubject); String messageBody = "Hi,\n\n"; - messageBody += "Here is your new password: " + password + "\n"; + messageBody += "Your new password: " + password + "\n"; + messageBody += "Your email: " + email + "\n\n"; msg.setContent(messageBody, "text/plain"); Transport.send(msg); @@ -1049,8 +1054,8 @@ return false; } - protected void actionSendPassword(HttpServletRequest request) - throws NoSuchAlgorithmException, AddressException, MessagingException { + protected void actionSendPassword(HttpServletRequest request, HttpServletResponse response) + throws NoSuchAlgorithmException, AddressException, MessagingException, ServletException, IOException { String email = request.getParameter("email"); if (email != null) { WikittyProxy proxy = BowProxy.getInstance(); @@ -1068,6 +1073,10 @@ sendMail(email, password); user.setPassword(md5); proxy.store(user); + request.getRequestDispatcher("login.jsp").forward(request, response); + } else { + request.setAttribute("error", "This email doesn't exist..."); + request.getRequestDispatcher("forgotPassword.jsp").forward(request, response); } } } Added: trunk/src/main/java/org/chorem/bow/UserMigration.java =================================================================== --- trunk/src/main/java/org/chorem/bow/UserMigration.java (rev 0) +++ trunk/src/main/java/org/chorem/bow/UserMigration.java 2010-06-21 16:22:07 UTC (rev 75) @@ -0,0 +1,45 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.chorem.bow; + +import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.Collection; +import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.Wikitty; +import org.nuiton.wikitty.WikittyException; +import org.nuiton.wikitty.WikittyExtension; +import org.nuiton.wikitty.WikittyExtensionMigration; +import org.nuiton.wikitty.WikittyService; +import org.nuiton.wikitty.WikittyTransaction; + +/** + * + * @author sherkhan + */ +public class UserMigration implements WikittyExtensionMigration { + + @Override + public Wikitty migrate(WikittyService service, WikittyTransaction transaction, Wikitty wikitty, WikittyExtension oldExt, WikittyExtension newExt) { + + Wikitty newWikitty = new Wikitty(wikitty.getId()); + newWikitty.setVersion(wikitty.getVersion()); + String extensionName = newExt.getName(); + Collection<WikittyExtension> extensions = wikitty.getExtensions(); + if (extensions.contains(oldExt)) { + extensions.remove(oldExt); + extensions.add(newExt); + } + newWikitty.addExtension(new ArrayList<WikittyExtension>(extensions)); + String password = newWikitty.getFieldAsString(extensionName, "password"); + try { + password = StringUtil.encodeMD5(password); + } catch (NoSuchAlgorithmException ex) { + throw new WikittyException(ex); + } + newWikitty.setField(extensionName, "password", password); + return newWikitty; + } +} Modified: trunk/src/main/xmi/bow.zargo =================================================================== (Binary files differ)