mirror of
https://bitbucket.org/wisemapping/wisemapping-open-source.git
synced 2024-11-22 22:27:55 +01:00
- Fix forgot password email
- Rewrite forgot password to use the new MVC model. - Show a dialog when the password has been sent.
This commit is contained in:
parent
8a638e8de6
commit
7d6b82c626
@ -1,56 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright [2011] [wisemapping]
|
|
||||||
*
|
|
||||||
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
|
|
||||||
* It is basically the Apache License, Version 2.0 (the "License") plus the
|
|
||||||
* "powered by wisemapping" text requirement on every single page;
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the license at
|
|
||||||
*
|
|
||||||
* http://www.wisemapping.org/license
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.wisemapping.controller;
|
|
||||||
|
|
||||||
import com.wisemapping.exceptions.EmailNotExistsException;
|
|
||||||
import com.wisemapping.service.InvalidUserEmailException;
|
|
||||||
import com.wisemapping.service.UserService;
|
|
||||||
import com.wisemapping.view.ForgotPasswordBean;
|
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
|
||||||
import org.springframework.web.servlet.view.RedirectView;
|
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
|
||||||
|
|
||||||
public class ForgotPasswordController
|
|
||||||
extends BaseSimpleFormController
|
|
||||||
{
|
|
||||||
|
|
||||||
//~ Instance fields ......................................................................................
|
|
||||||
|
|
||||||
private UserService userService;
|
|
||||||
|
|
||||||
//~ Methods ..............................................................................................
|
|
||||||
|
|
||||||
public ModelAndView onSubmit(Object command)
|
|
||||||
throws ServletException, EmailNotExistsException {
|
|
||||||
|
|
||||||
final ForgotPasswordBean bean = (ForgotPasswordBean) command;
|
|
||||||
try {
|
|
||||||
userService.sendEmailPassword(bean.getEmail());
|
|
||||||
} catch (InvalidUserEmailException e) {
|
|
||||||
throw new EmailNotExistsException(e);
|
|
||||||
}
|
|
||||||
return new ModelAndView(new RedirectView(getSuccessView()));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUserService(UserService userService)
|
|
||||||
{
|
|
||||||
this.userService = userService;
|
|
||||||
}
|
|
||||||
}
|
|
@ -35,22 +35,18 @@ public final class Mailer {
|
|||||||
|
|
||||||
private JavaMailSender mailSender;
|
private JavaMailSender mailSender;
|
||||||
private VelocityEngine velocityEngine;
|
private VelocityEngine velocityEngine;
|
||||||
private String registrationEmail;
|
private String serverFromEmail;
|
||||||
private String siteEmail;
|
private String supportEmail;
|
||||||
|
|
||||||
//~ Methods ..............................................................................................
|
//~ Methods ..............................................................................................
|
||||||
|
|
||||||
public Mailer(String registrationEmail, String siteEmail) {
|
public Mailer(@NotNull String siteEmail, @NotNull String supportEmail) {
|
||||||
this.registrationEmail = registrationEmail;
|
this.serverFromEmail = siteEmail;
|
||||||
this.siteEmail = siteEmail;
|
this.supportEmail = supportEmail;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getRegistrationEmail() {
|
public String getServerSenderEmail() {
|
||||||
return registrationEmail;
|
return serverFromEmail;
|
||||||
}
|
|
||||||
|
|
||||||
public String getSiteEmail() {
|
|
||||||
return siteEmail;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendEmail(final String from, final String to, final String subject, final Map model,
|
public void sendEmail(final String from, final String to, final String subject, final Map model,
|
||||||
@ -79,4 +75,8 @@ public final class Mailer {
|
|||||||
public void setVelocityEngine(VelocityEngine engine) {
|
public void setVelocityEngine(VelocityEngine engine) {
|
||||||
this.velocityEngine = engine;
|
this.velocityEngine = engine;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getSupportEmail() {
|
||||||
|
return supportEmail;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ final public class NotificationService {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
// Sent collaboration email ...
|
// Sent collaboration email ...
|
||||||
final String formMail = mailer.getSiteEmail();
|
final String formMail = mailer.getServerSenderEmail();
|
||||||
|
|
||||||
// Is the user already registered user ?.
|
// Is the user already registered user ?.
|
||||||
final String collabEmail = collaboration.getCollaborator().getEmail();
|
final String collabEmail = collaboration.getCollaborator().getEmail();
|
||||||
@ -69,6 +69,21 @@ final public class NotificationService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void resetPassword(@NotNull User user, @NotNull String temporalPassword) {
|
||||||
|
try {
|
||||||
|
final Map<String, Object> model = new HashMap<String, Object>();
|
||||||
|
model.put("user", user);
|
||||||
|
model.put("temporalPassword", temporalPassword);
|
||||||
|
model.put("supportEmail", mailer.getSupportEmail());
|
||||||
|
model.put("password", temporalPassword);
|
||||||
|
model.put("baseUrl", this.baseUrl);
|
||||||
|
|
||||||
|
mailer.sendEmail(mailer.getServerSenderEmail(), user.getEmail(), "Reset Your WiseMapping Password", model, "passwordRecovery.vm");
|
||||||
|
} catch (Exception e) {
|
||||||
|
handleException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void handleException(Exception e) {
|
private void handleException(Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -82,5 +97,20 @@ final public class NotificationService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void activateAccount(@NotNull User user) {
|
||||||
|
final Map<String, User> model = new HashMap<String, User>();
|
||||||
|
model.put("user", user);
|
||||||
|
mailer.sendEmail(mailer.getServerSenderEmail(), user.getEmail(), "WiseMapping : Active account", model, "activationAccountMail.vm");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendRegistrationEmail(@NotNull User user) {
|
||||||
|
final Map<String, Object> model = new HashMap<String, Object>();
|
||||||
|
model.put("user", user);
|
||||||
|
final String activationUrl = "http://wisemapping.com/c/activation?code=" + user.getActivationCode();
|
||||||
|
model.put("emailcheck", activationUrl);
|
||||||
|
mailer.sendEmail(mailer.getServerSenderEmail(), user.getEmail(), "Welcome to Wisemapping!", model,
|
||||||
|
"confirmationMail.vm");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ package com.wisemapping.ncontroller;
|
|||||||
|
|
||||||
import com.wisemapping.service.MindmapService;
|
import com.wisemapping.service.MindmapService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
@ -27,6 +28,7 @@ import org.springframework.web.servlet.ModelAndView;
|
|||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
public class PublicPagesController {
|
public class PublicPagesController {
|
||||||
|
@Qualifier("mindmapService")
|
||||||
@Autowired
|
@Autowired
|
||||||
private MindmapService mindmapService;
|
private MindmapService mindmapService;
|
||||||
|
|
||||||
@ -57,8 +59,7 @@ public class PublicPagesController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "iframeWrapper")
|
@RequestMapping(value = "iframeWrapper")
|
||||||
public ModelAndView showIframe(@RequestParam(required = true) String url) {
|
public ModelAndView showIframe(@RequestParam(required = true) String url) {
|
||||||
return new ModelAndView("iframeWrapper", "url", url);
|
return new ModelAndView("iframeWrapper", "url", url);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
* Copyright [2011] [wisemapping]
|
||||||
|
*
|
||||||
|
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
|
||||||
|
* It is basically the Apache License, Version 2.0 (the "License") plus the
|
||||||
|
* "powered by wisemapping" text requirement on every single page;
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the license at
|
||||||
|
*
|
||||||
|
* http://www.wisemapping.org/license
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.wisemapping.ncontroller;
|
||||||
|
|
||||||
|
|
||||||
|
import com.wisemapping.service.InvalidUserEmailException;
|
||||||
|
import com.wisemapping.service.UserService;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.validation.BindingResult;
|
||||||
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
public class UsersController {
|
||||||
|
|
||||||
|
@Qualifier("userService")
|
||||||
|
@Autowired
|
||||||
|
private UserService userService;
|
||||||
|
|
||||||
|
@RequestMapping(value = "user/resetPassword", method = RequestMethod.GET)
|
||||||
|
public ModelAndView showResetPasswordPage() {
|
||||||
|
return new ModelAndView("forgotPassword");
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "user/resetPassword", method = RequestMethod.POST)
|
||||||
|
public ModelAndView resetPassword(@RequestParam(required = true) String email) {
|
||||||
|
|
||||||
|
ModelAndView result;
|
||||||
|
try {
|
||||||
|
userService.resetPassword(email);
|
||||||
|
result = new ModelAndView("forgotPasswordSuccess");
|
||||||
|
|
||||||
|
} catch (InvalidUserEmailException e) {
|
||||||
|
result = new ModelAndView("forgotPasswordError");
|
||||||
|
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserService(@NotNull UserService userService) {
|
||||||
|
this.userService = userService;
|
||||||
|
}
|
||||||
|
}
|
@ -28,7 +28,7 @@ public interface UserService {
|
|||||||
|
|
||||||
public User createUser(@NotNull User user, boolean emailConfirmEnabled) throws WiseMappingException;
|
public User createUser(@NotNull User user, boolean emailConfirmEnabled) throws WiseMappingException;
|
||||||
|
|
||||||
public void changePassword(User user);
|
public void changePassword(@NotNull User user);
|
||||||
|
|
||||||
public User getUserBy(String email);
|
public User getUserBy(String email);
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ public interface UserService {
|
|||||||
|
|
||||||
public void updateUser(User user);
|
public void updateUser(User user);
|
||||||
|
|
||||||
public void sendEmailPassword(String email) throws InvalidUserEmailException;
|
public void resetPassword(@NotNull String email) throws InvalidUserEmailException;
|
||||||
|
|
||||||
public User reloadUser(final User user);
|
public User reloadUser(final User user);
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ package com.wisemapping.service;
|
|||||||
import com.wisemapping.dao.UserManager;
|
import com.wisemapping.dao.UserManager;
|
||||||
import com.wisemapping.exceptions.WiseMappingException;
|
import com.wisemapping.exceptions.WiseMappingException;
|
||||||
import com.wisemapping.mail.Mailer;
|
import com.wisemapping.mail.Mailer;
|
||||||
|
import com.wisemapping.mail.NotificationService;
|
||||||
import com.wisemapping.model.Collaborator;
|
import com.wisemapping.model.Collaborator;
|
||||||
import com.wisemapping.model.User;
|
import com.wisemapping.model.User;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
@ -35,8 +36,7 @@ public class UserServiceImpl
|
|||||||
implements UserService {
|
implements UserService {
|
||||||
private UserManager userManager;
|
private UserManager userManager;
|
||||||
private MindmapService mindmapService;
|
private MindmapService mindmapService;
|
||||||
private Mailer mailer;
|
private NotificationService notificationService;
|
||||||
final static Logger logger = Logger.getLogger("org.wisemapping.service");
|
|
||||||
|
|
||||||
public void activateAccount(long code)
|
public void activateAccount(long code)
|
||||||
throws InvalidActivationCodeException {
|
throws InvalidActivationCodeException {
|
||||||
@ -47,9 +47,7 @@ public class UserServiceImpl
|
|||||||
final Calendar now = Calendar.getInstance();
|
final Calendar now = Calendar.getInstance();
|
||||||
user.setActivationDate(now);
|
user.setActivationDate(now);
|
||||||
userManager.updateUser(user);
|
userManager.updateUser(user);
|
||||||
final Map<String, User> model = new HashMap<String, User>();
|
notificationService.activateAccount(user);
|
||||||
model.put("user", user);
|
|
||||||
mailer.sendEmail(mailer.getRegistrationEmail(), user.getEmail(), "WiseMapping : Active account", model, "activationAccountMail.vm");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,18 +55,19 @@ public class UserServiceImpl
|
|||||||
return this.getUserBy(user.getId());
|
return this.getUserBy(user.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendEmailPassword(String email)
|
public void resetPassword(@NotNull String email)
|
||||||
throws InvalidUserEmailException {
|
throws InvalidUserEmailException {
|
||||||
final User user = userManager.getUserBy(email);
|
final User user = userManager.getUserBy(email);
|
||||||
if (user != null) {
|
if (user != null) {
|
||||||
final Map<String, Object> model = new HashMap<String, Object>();
|
// Generate a random password ...
|
||||||
final String password = randomstring(8, 10);
|
final String password = randomstring(8, 10);
|
||||||
user.setPassword(password);
|
user.setPassword(password);
|
||||||
changePassword(user);
|
changePassword(user);
|
||||||
model.put("user", user);
|
|
||||||
model.put("password", password);
|
|
||||||
|
|
||||||
mailer.sendEmail(mailer.getRegistrationEmail(), user.getEmail(), "WiseMapping : Recovery Password", model, "passwordRecovery.vm");
|
// Send an email with the new temporal password ...
|
||||||
|
notificationService.resetPassword(user, password);
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
throw new InvalidUserEmailException("The email '" + email + "' does not exists.");
|
throw new InvalidUserEmailException("The email '" + email + "' does not exists.");
|
||||||
}
|
}
|
||||||
@ -91,8 +90,8 @@ public class UserServiceImpl
|
|||||||
return lo + i;
|
return lo + i;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteUser(@NotNull User user){
|
public void deleteUser(@NotNull User user) {
|
||||||
userManager.deleteUser(user);
|
userManager.deleteUser(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
public User createUser(@NotNull User user, boolean emailConfirmEnabled) throws WiseMappingException {
|
public User createUser(@NotNull User user, boolean emailConfirmEnabled) throws WiseMappingException {
|
||||||
@ -119,24 +118,12 @@ public class UserServiceImpl
|
|||||||
|
|
||||||
// Send registration email.
|
// Send registration email.
|
||||||
if (emailConfirmEnabled) {
|
if (emailConfirmEnabled) {
|
||||||
sendRegistrationEmail(user);
|
notificationService.sendRegistrationEmail(user);
|
||||||
}
|
}
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendRegistrationEmail(User user) {
|
public void changePassword(@NotNull User user) {
|
||||||
final Map<String, Object> model = new HashMap<String, Object>();
|
|
||||||
model.put("user", user);
|
|
||||||
|
|
||||||
|
|
||||||
final String activationUrl = "http://wisemapping.com/c/activation?code=" + user.getActivationCode();
|
|
||||||
logger.info("create User - acrivationUrl: " + activationUrl);
|
|
||||||
model.put("emailcheck", activationUrl);
|
|
||||||
mailer.sendEmail(mailer.getRegistrationEmail(), user.getEmail(), "Welcome to Wisemapping!", model,
|
|
||||||
"confirmationMail.vm");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void changePassword(User user) {
|
|
||||||
userManager.updateUser(user);
|
userManager.updateUser(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -152,19 +139,19 @@ public class UserServiceImpl
|
|||||||
return userManager.getUserBy(id);
|
return userManager.getUserBy(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateUser(User user) {
|
public void updateUser(@NotNull User user) {
|
||||||
userManager.updateUser(user);
|
userManager.updateUser(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setUserManager(UserManager userManager) {
|
public void setUserManager(@NotNull UserManager userManager) {
|
||||||
this.userManager = userManager;
|
this.userManager = userManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMailer(Mailer mailer) {
|
public void setMindmapService(@NotNull MindmapService mindmapService) {
|
||||||
this.mailer = mailer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMindmapService(MindmapService mindmapService) {
|
|
||||||
this.mindmapService = mindmapService;
|
this.mindmapService = mindmapService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setNotificationService(NotificationService notificationService) {
|
||||||
|
this.notificationService = notificationService;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,47 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright [2011] [wisemapping]
|
|
||||||
*
|
|
||||||
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
|
|
||||||
* It is basically the Apache License, Version 2.0 (the "License") plus the
|
|
||||||
* "powered by wisemapping" text requirement on every single page;
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the license at
|
|
||||||
*
|
|
||||||
* http://www.wisemapping.org/license
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.wisemapping.validator;
|
|
||||||
|
|
||||||
import org.springframework.validation.Validator;
|
|
||||||
import org.springframework.validation.Errors;
|
|
||||||
import com.wisemapping.view.ForgotPasswordBean;
|
|
||||||
import com.wisemapping.controller.Messages;
|
|
||||||
|
|
||||||
public class ForgotPasswordValidator
|
|
||||||
implements Validator {
|
|
||||||
|
|
||||||
|
|
||||||
public boolean supports(final Class clazz) {
|
|
||||||
return clazz.equals(ForgotPasswordBean.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void validate(Object obj, Errors errors) {
|
|
||||||
ForgotPasswordBean bean = (ForgotPasswordBean) obj;
|
|
||||||
if (bean == null) {
|
|
||||||
errors.rejectValue("forgotPassword", "error.not-specified", null, "Value required.");
|
|
||||||
} else {
|
|
||||||
|
|
||||||
final String email = bean.getEmail();
|
|
||||||
boolean isValid = Utils.isValidateEmailAddress(email);
|
|
||||||
if (!isValid) {
|
|
||||||
errors.rejectValue("email", Messages.NO_VALID_EMAIL_ADDRESS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,32 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright [2011] [wisemapping]
|
|
||||||
*
|
|
||||||
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
|
|
||||||
* It is basically the Apache License, Version 2.0 (the "License") plus the
|
|
||||||
* "powered by wisemapping" text requirement on every single page;
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the license at
|
|
||||||
*
|
|
||||||
* http://www.wisemapping.org/license
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.wisemapping.view;
|
|
||||||
|
|
||||||
public class ForgotPasswordBean {
|
|
||||||
|
|
||||||
private String email;
|
|
||||||
|
|
||||||
public String getEmail() {
|
|
||||||
return email;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setEmail(String e) {
|
|
||||||
this.email = e;
|
|
||||||
}
|
|
||||||
}
|
|
@ -34,17 +34,21 @@ database.password=
|
|||||||
#------------------------
|
#------------------------
|
||||||
mail.smtp.port=587
|
mail.smtp.port=587
|
||||||
mail.smtp.host=smtp.gmail.com
|
mail.smtp.host=smtp.gmail.com
|
||||||
mail.username=pveiga@gmail.com
|
mail.username=<gmail-user-account>
|
||||||
mail.password=
|
mail.password=<gmail-password>
|
||||||
mail.smtp.auth=true
|
mail.smtp.auth=true
|
||||||
mail.smtp.starttls.enable=true
|
mail.smtp.starttls.enable=true
|
||||||
mail.smtp.quitwait=false
|
mail.smtp.quitwait=false
|
||||||
|
|
||||||
#------------------------
|
#------------------------
|
||||||
# Domain address
|
# Emails configuration
|
||||||
#------------------------
|
#------------------------
|
||||||
mail.registrationEmail=root@localhost
|
|
||||||
mail.siteEmail=root@localhost
|
# "from" email account that will appear in the emails sent from the sender.
|
||||||
|
mail.serverSendEmail=root@localhost
|
||||||
|
|
||||||
|
# Support account that the users could use to contact you. This address will appear in emails and in some places in the site.
|
||||||
|
mail.supportEmail=root@localhost
|
||||||
|
|
||||||
##################################################################################
|
##################################################################################
|
||||||
# Users Registration Configuration
|
# Users Registration Configuration
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
log4j.rootLogger=WARN, stdout, R
|
log4j.rootLogger=WARN, stdout, R
|
||||||
log4j.logger.com.wisemapping=WARN,stdout,R
|
log4j.logger.com.wisemapping=WARN,stdout,R
|
||||||
log4j.logger.org.springframework=WARN,stdout,R
|
log4j.logger.org.springframework=DEBUG,stdout,R
|
||||||
log4j.logger.org.codehaus.jackson=WARN,stdout,R
|
log4j.logger.org.codehaus.jackson=WARN,stdout,R
|
||||||
log4j.additivity.org.hibernate.SQL=false
|
log4j.additivity.org.hibernate.SQL=false
|
||||||
|
|
||||||
|
@ -1,24 +1,37 @@
|
|||||||
<html>
|
<html>
|
||||||
<body>
|
<body>
|
||||||
<h3>Your password was regenerated from WiseMapping!</h3>
|
<div style="background-color: #fbeed5; max-width: 650px; font-family: Arial, sans-serif; color: #000; padding: 5px;">
|
||||||
<p>
|
<div style="height: 60px; font-size: 14px; font-weight: bold; padding-bottom: 4px;">
|
||||||
Your account information is:
|
<table style="display: inline;width: 100%;">
|
||||||
</p>
|
<tbody>
|
||||||
User Login: ${user.email}
|
<tr>
|
||||||
</p>
|
<td height="50px" width="2px"
|
||||||
<p>
|
style="padding: 0; padding-right: 5px; text-align:center;font-weight: normal;font-family: Arial, sans-serif">
|
||||||
New Password: ${password}
|
<a href="${baseUrl}">
|
||||||
</p>
|
<img style="border: 0;margin-top: 10px;"
|
||||||
<p>
|
src="${baseUrl}/images/logo-small.png"
|
||||||
Thank you for using WiseMapping.
|
alt="WiseMapping Log"/>
|
||||||
</p>
|
|
||||||
<p>
|
</a>
|
||||||
For questions or concerns regarding your account, send us an email to support@wisemapping.com.
|
</td>
|
||||||
</p>
|
<td valign="bottom" height="32px" style="padding: 0;font-size: 16px;">
|
||||||
<p>
|
Your password has been reset
|
||||||
Best Regards, <br/>
|
</td>
|
||||||
The WiseMapping Team.
|
</tr>
|
||||||
<a href="http://www.wisemapping.com">WiseMapping Site</a>
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div style="font-size: 13px; background-color: #FFF; padding: 10px 7px 7px 7px; min-height: 100px">
|
||||||
|
<p>A temporal password has been generated for you account. </p>
|
||||||
|
|
||||||
|
<p><strong>New Password: ${password}</strong></p>
|
||||||
|
|
||||||
|
<p>You can login clicking <a href="${baseUrl}/c/login">here</a>.We strongly encourage you to change the password as soon as possible.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p style="font-size: 13px;font-family: Arial, sans-serif">Important: Do not reply this email. If
|
||||||
|
you need further help or have any concerns regarding your account, contact us to <a href="mailto:${supportEmail}">here</a>.
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -90,7 +90,7 @@ CREW=The Crew
|
|||||||
ALREADY_A_MEMBER=Already a member?
|
ALREADY_A_MEMBER=Already a member?
|
||||||
WORD_VERIFICATION=Word Verification
|
WORD_VERIFICATION=Word Verification
|
||||||
TERM_OF_THE_SERVICE=Terms of Service:
|
TERM_OF_THE_SERVICE=Terms of Service:
|
||||||
FORGOT_PASSWORD_MESSAGE=Please enter your email to start the password recovery process.
|
FORGOT_PASSWORD_MESSAGE=Please enter an email address to help us locate your WiseMapping account.
|
||||||
SEARCH_FIELD=Map Title or Tag
|
SEARCH_FIELD=Map Title or Tag
|
||||||
|
|
||||||
FIELD_REQUIRED=Required field cannot be left blank
|
FIELD_REQUIRED=Required field cannot be left blank
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE tiles-definitions PUBLIC
|
<!DOCTYPE tiles-definitions PUBLIC
|
||||||
"-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
|
"-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
|
||||||
"http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
|
"http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
|
||||||
|
|
||||||
<tiles-definitions>
|
<tiles-definitions>
|
||||||
|
|
||||||
@ -30,19 +30,19 @@
|
|||||||
</definition>
|
</definition>
|
||||||
|
|
||||||
<definition name="errorTemplate" extends="pageTemplate">
|
<definition name="errorTemplate" extends="pageTemplate">
|
||||||
<put-attribute name="body" value="/jsp/errorTemplate.jsp" type="page"/>
|
<put-attribute name="body" value="/jsp/errorTemplate.jsp"/>
|
||||||
</definition>
|
</definition>
|
||||||
|
|
||||||
<definition name="iframeWrapper" template="/jsp/iframeWrapper.jsp"/>
|
<definition name="iframeWrapper" template="/jsp/iframeWrapper.jsp"/>
|
||||||
|
|
||||||
<!-- Error Pages -->
|
<!-- Error Pages -->
|
||||||
<definition name="gcfPluginNeeded" extends="pageTemplate">
|
<definition name="gcfPluginNeeded" extends="pageTemplate">
|
||||||
<put-attribute name="body" value="/jsp/gcfPluginNeeded.jsp" type="page"/>
|
<put-attribute name="body" value="/jsp/gcfPluginNeeded.jsp"/>
|
||||||
<put-attribute name="title" value="INSTALL_CFG"/>
|
<put-attribute name="title" value="INSTALL_CFG"/>
|
||||||
</definition>
|
</definition>
|
||||||
|
|
||||||
<definition name="installCFG" extends="pageTemplate">
|
<definition name="installCFG" extends="pageTemplate">
|
||||||
<put-attribute name="body" value="/jsp/installCFG.jsp" type="page"/>
|
<put-attribute name="body" value="/jsp/installCFG.jsp"/>
|
||||||
<put-attribute name="title" value="INSTALL_CFG"/>
|
<put-attribute name="title" value="INSTALL_CFG"/>
|
||||||
</definition>
|
</definition>
|
||||||
|
|
||||||
@ -56,15 +56,20 @@
|
|||||||
<put-attribute name="details" value="NO_ENOUGH_PERMISSIONS_DETAILS"/>
|
<put-attribute name="details" value="NO_ENOUGH_PERMISSIONS_DETAILS"/>
|
||||||
</definition>
|
</definition>
|
||||||
|
|
||||||
<definition name="emailNotExistsError" extends="errorTemplate">
|
<!-- Main Pages -->
|
||||||
|
<definition name="forgotPasswordError" extends="errorTemplate">
|
||||||
<put-attribute name="title" value="INVALID_EMAIL_ERROR"/>
|
<put-attribute name="title" value="INVALID_EMAIL_ERROR"/>
|
||||||
<put-attribute name="body" value="/jsp/emailNotExistsError.jsp"/>
|
<put-attribute name="body" value="/jsp/userForgotPasswordError.jsp"/>
|
||||||
|
</definition>
|
||||||
|
|
||||||
|
<definition name="forgotPasswordSuccess" extends="errorTemplate">
|
||||||
|
<put-attribute name="title" value="FORGOT_PASSWORD"/>
|
||||||
|
<put-attribute name="body" value="/jsp/userForgotPasswordSuccess.jsp"/>
|
||||||
</definition>
|
</definition>
|
||||||
|
|
||||||
<!-- Main Pages -->
|
|
||||||
<definition name="forgotPassword" extends="pageTemplate">
|
<definition name="forgotPassword" extends="pageTemplate">
|
||||||
<put-attribute name="title" value="FORGOT_PASSWORD"/>
|
<put-attribute name="title" value="FORGOT_PASSWORD"/>
|
||||||
<put-attribute name="body" value="/jsp/forgotPassword.jsp"/>
|
<put-attribute name="body" value="/jsp/userForgotPassword.jsp"/>
|
||||||
</definition>
|
</definition>
|
||||||
|
|
||||||
<definition name="userRegistration" extends="pageTemplate">
|
<definition name="userRegistration" extends="pageTemplate">
|
||||||
|
@ -28,7 +28,6 @@
|
|||||||
<prop key="com.wisemapping.exceptions.UnsupportedBrowserException">browserNotSupported</prop>
|
<prop key="com.wisemapping.exceptions.UnsupportedBrowserException">browserNotSupported</prop>
|
||||||
<!-- Security exceptions are wrapped in this exceptions -->
|
<!-- Security exceptions are wrapped in this exceptions -->
|
||||||
<prop key="java.lang.reflect.UndeclaredThrowableException">securityError</prop>
|
<prop key="java.lang.reflect.UndeclaredThrowableException">securityError</prop>
|
||||||
<prop key="com.wisemapping.exceptions.EmailNotExistsException">emailNotExistsError</prop>
|
|
||||||
</props>
|
</props>
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
<sec:http pattern="/c/login" security="none"/>
|
<sec:http pattern="/c/login" security="none"/>
|
||||||
<sec:http pattern="/c/userregistration" security="none"/>
|
<sec:http pattern="/c/userregistration" security="none"/>
|
||||||
<sec:http pattern="/c/forgotpassword" security="none"/>
|
<sec:http pattern="/c/user/resetpassword" security="none"/>
|
||||||
<sec:http pattern="/c/home" security="none"/>
|
<sec:http pattern="/c/home" security="none"/>
|
||||||
<sec:http pattern="/c/maps/*/embed" security="none"/>
|
<sec:http pattern="/c/maps/*/embed" security="none"/>
|
||||||
|
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
<beans>
|
<beans>
|
||||||
<bean id="mailer" class="com.wisemapping.mail.Mailer" singleton="true">
|
<bean id="mailer" class="com.wisemapping.mail.Mailer" singleton="true">
|
||||||
<constructor-arg index="0" value="${mail.registrationEmail}"/>
|
<constructor-arg index="0" value="${mail.serverSendEmail}"/>
|
||||||
<constructor-arg index="1" value="${mail.siteEmail}"/>
|
<constructor-arg index="1" value="${mail.supportEmail}"/>
|
||||||
<property name="mailSender" ref="mailSender"/>
|
<property name="mailSender" ref="mailSender"/>
|
||||||
<property name="velocityEngine" ref="velocityEngine"/>
|
<property name="velocityEngine" ref="velocityEngine"/>
|
||||||
</bean>
|
</bean>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<bean id="userServiceTarget" class="com.wisemapping.service.UserServiceImpl">
|
<bean id="userServiceTarget" class="com.wisemapping.service.UserServiceImpl">
|
||||||
<property name="userManager" ref="userManager"/>
|
<property name="userManager" ref="userManager"/>
|
||||||
<property name="mindmapService" ref="mindMapServiceTarget"/>
|
<property name="mindmapService" ref="mindMapServiceTarget"/>
|
||||||
<property name="mailer" ref="mailer"/>
|
<property name="notificationService" ref="notificationService"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="userService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
|
<bean id="userService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
|
||||||
|
@ -51,18 +51,6 @@
|
|||||||
<property name="captchaService" ref="reCaptcha"/>
|
<property name="captchaService" ref="reCaptcha"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="forgotPasswordValidator" class="com.wisemapping.validator.ForgotPasswordValidator"/>
|
|
||||||
|
|
||||||
<bean id="forgotPasswordController" class="com.wisemapping.controller.ForgotPasswordController">
|
|
||||||
<property name="sessionForm" value="false"/>
|
|
||||||
<property name="commandName" value="forgotPassword"/>
|
|
||||||
<property name="commandClass" value="com.wisemapping.view.ForgotPasswordBean"/>
|
|
||||||
<property name="validator" ref="forgotPasswordValidator"/>
|
|
||||||
<property name="formView" value="forgotPassword"/>
|
|
||||||
<property name="successView" value="mindmap"/>
|
|
||||||
<property name="userService" ref="userService"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="settingResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
|
<bean id="settingResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
|
||||||
<property name="mappings">
|
<property name="mappings">
|
||||||
<props>
|
<props>
|
||||||
@ -127,9 +115,8 @@
|
|||||||
<property name="mappings">
|
<property name="mappings">
|
||||||
<props>
|
<props>
|
||||||
<!-- Forms based -->
|
<!-- Forms based -->
|
||||||
<prop key="userRegistration">userController</prop>
|
<prop key="userRegistration">usersController</prop>
|
||||||
<prop key="login">loginController</prop>
|
<prop key="login">loginController</prop>
|
||||||
<prop key="forgotPassword">forgotPasswordController</prop>
|
|
||||||
<prop key="activation">activationController</prop>
|
<prop key="activation">activationController</prop>
|
||||||
<prop key="changePassword">changePasswordController</prop>
|
<prop key="changePassword">changePasswordController</prop>
|
||||||
<prop key="settings">settingsController</prop>
|
<prop key="settings">settingsController</prop>
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
<%@ include file="/jsp/init.jsp" %>
|
|
||||||
<h1>
|
|
||||||
<spring:message code="INVALID_EMAIL_ERROR"/>
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<h2>The email is not register or you account is not active yet.</h2>
|
|
||||||
|
|
||||||
<p>If the problem persist please send us an email to <a href="mailto:support@wisemapping.com">support@wisemapping.com </a></p>
|
|
||||||
</br>
|
|
||||||
<p>We are working to add more features in the future. Stay tuned !</p>
|
|
||||||
</br>
|
|
||||||
<p>Best Regards,</p>
|
|
||||||
<p>WiseMapping Team.</p>
|
|
@ -1,10 +1,6 @@
|
|||||||
<%@ page import="org.apache.log4j.Logger" %>
|
|
||||||
<%@ page autoFlush="true" buffer="none" %>
|
<%@ page autoFlush="true" buffer="none" %>
|
||||||
<%@ include file="/jsp/init.jsp" %>
|
<%@ include file="/jsp/init.jsp" %>
|
||||||
|
|
||||||
<%!
|
|
||||||
final Logger logger = Logger.getLogger("com.wisemapping");
|
|
||||||
%>
|
|
||||||
<div style="position:relative;">
|
<div style="position:relative;">
|
||||||
<div id="prompt">
|
<div id="prompt">
|
||||||
<!-- if IE without GCF, prompt goes here -->
|
<!-- if IE without GCF, prompt goes here -->
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
<div class="loginNews">
|
<div class="loginNews">
|
||||||
<h1>What is New: </h1>
|
<h1>What is New: </h1>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Links Between Nodes</li>
|
<li>Complerly new UI</li>
|
||||||
<li>FreeMind 0.9 Update</li>
|
<li>FreeMind 0.9 Update</li>
|
||||||
<li>Improved HTML 5.0 Support</li>
|
<li>Improved HTML 5.0 Support</li>
|
||||||
<li>Firefox 12 officially supported</li>
|
<li>Firefox 12 officially supported</li>
|
||||||
|
@ -1,20 +1,26 @@
|
|||||||
<%@ include file="/jsp/init.jsp" %>
|
<%@ include file="/jsp/init.jsp" %>
|
||||||
|
<script type="text/javascript" language="javascript">
|
||||||
|
$(function() {
|
||||||
|
$('.btn-primary').click(function() {
|
||||||
|
$(this).button("loading");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<div class="fform">
|
<div class="fform">
|
||||||
<h1>
|
<h1>
|
||||||
<spring:message code="FORGOT_PASSWORD"/>
|
<spring:message code="FORGOT_PASSWORD"/>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<p><spring:message code="FORGOT_PASSWORD_MESSAGE"/></p>
|
<p><spring:message code="FORGOT_PASSWORD_MESSAGE"/></p>
|
||||||
|
|
||||||
<form:form method="post" commandName="forgotPassword">
|
<form:form method="post" commandName="resetPassword">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<label for="email"><spring:message code="EMAIL"/></label>
|
<label for="email"><spring:message code="EMAIL"/></label>
|
||||||
<form:input path="email" id="email" tabindex="1" type="email" required="required"/>
|
<input id="email" type="email" required="required" name="email"/>
|
||||||
<form:errors path="email" cssClass="errorMsg"/>
|
|
||||||
|
|
||||||
<input type="submit" value="<spring:message code="SUBMIT"/>" class="btn btn-primary"/>
|
<input type="submit" value="<spring:message code="SUBMIT"/>" class="btn btn-primary" data-loading-text="Saving ..."/>
|
||||||
<input type="button" value="<spring:message code="CANCEL"/>" class="btn"
|
<input type="button" value="<spring:message code="CANCEL"/>" class="btn"
|
||||||
onclick="window.location='<c:url value="c/maps/"/>'"/>
|
onclick="window.location='<c:url value="c/maps/"/>'"/>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
@ -27,7 +33,7 @@
|
|||||||
<spring:message code="NOT_READY_A_USER"/>
|
<spring:message code="NOT_READY_A_USER"/>
|
||||||
</b>
|
</b>
|
||||||
<spring:message code="NOT_READY_A_USER_MESSAGE"/>
|
<spring:message code="NOT_READY_A_USER_MESSAGE"/>
|
||||||
<a href="userRegistration">
|
<a href="c/userRegistration">
|
||||||
<spring:message code="JOIN_NOW"/>
|
<spring:message code="JOIN_NOW"/>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
6
wise-webapp/src/main/webapp/jsp/userForgotPasswordError.jsp
Executable file
6
wise-webapp/src/main/webapp/jsp/userForgotPasswordError.jsp
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
<%@ include file="/jsp/init.jsp" %>
|
||||||
|
|
||||||
|
<h2>The email is not register or you account is not active yet.</h2>
|
||||||
|
|
||||||
|
<p>If the problem persist please send us an email to <a
|
||||||
|
href="mailto:support@wisemapping.com">support@wisemapping.com </a></p>
|
@ -0,0 +1,12 @@
|
|||||||
|
<%@ include file="/jsp/init.jsp" %>
|
||||||
|
|
||||||
|
<h2>
|
||||||
|
Your temporal password has been sent
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
We've sent you an email that will allow you to reset your password quickly and easily. Please check your email now.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>If you have any problem receiving the email, contact us to <a
|
||||||
|
href="mailto:support@wisemapping.com">support@wisemapping.com </a></p>
|
Loading…
Reference in New Issue
Block a user