mirror of
https://bitbucket.org/wisemapping/wisemapping-open-source.git
synced 2024-11-26 07:44:56 +01:00
Migrate UserRegitration to MVC 3.0.
wisemapping-servlet.xml is not used anymore.
This commit is contained in:
parent
ea2bff60f7
commit
33131d4e9e
@ -42,7 +42,7 @@ public class LoginController {
|
|||||||
result = new ModelAndView("forward:/c/maps/");
|
result = new ModelAndView("forward:/c/maps/");
|
||||||
} else {
|
} else {
|
||||||
result = new ModelAndView("login");
|
result = new ModelAndView("login");
|
||||||
result.addObject("isHsql", driver.indexOf("hsql") != -1);
|
result.addObject("isHsql", driver.contains("hsql"));
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -19,11 +19,19 @@
|
|||||||
package com.wisemapping.ncontroller;
|
package com.wisemapping.ncontroller;
|
||||||
|
|
||||||
|
|
||||||
|
import com.wisemapping.controller.Messages;
|
||||||
|
import com.wisemapping.exceptions.WiseMappingException;
|
||||||
|
import com.wisemapping.model.User;
|
||||||
import com.wisemapping.service.InvalidUserEmailException;
|
import com.wisemapping.service.InvalidUserEmailException;
|
||||||
import com.wisemapping.service.UserService;
|
import com.wisemapping.service.UserService;
|
||||||
|
import com.wisemapping.validator.UserValidator;
|
||||||
|
import com.wisemapping.view.UserBean;
|
||||||
|
import net.tanesha.recaptcha.ReCaptcha;
|
||||||
|
import net.tanesha.recaptcha.ReCaptchaResponse;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.validation.BindingResult;
|
import org.springframework.validation.BindingResult;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||||
@ -32,6 +40,9 @@ import org.springframework.web.bind.annotation.RequestMethod;
|
|||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
public class UsersController {
|
public class UsersController {
|
||||||
|
|
||||||
@ -39,6 +50,16 @@ public class UsersController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private UserService userService;
|
private UserService userService;
|
||||||
|
|
||||||
|
@Value("${registration.email.enabled}")
|
||||||
|
boolean emailConfirmEnabled;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ReCaptcha captchaService;
|
||||||
|
|
||||||
|
@Value("${registration.recaptcha.enabled}")
|
||||||
|
private boolean captchaEnabled;
|
||||||
|
|
||||||
|
|
||||||
@RequestMapping(value = "user/resetPassword", method = RequestMethod.GET)
|
@RequestMapping(value = "user/resetPassword", method = RequestMethod.GET)
|
||||||
public ModelAndView showResetPasswordPage() {
|
public ModelAndView showResetPasswordPage() {
|
||||||
return new ModelAndView("forgotPassword");
|
return new ModelAndView("forgotPassword");
|
||||||
@ -59,7 +80,62 @@ public class UsersController {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setUserService(@NotNull UserService userService) {
|
@RequestMapping(value = "user/registration", method = RequestMethod.GET)
|
||||||
this.userService = userService;
|
public ModelAndView showRegistrationPage(@NotNull HttpServletRequest request) {
|
||||||
|
if (captchaEnabled) {
|
||||||
|
// If captcha is enabled, generate it ...
|
||||||
|
final Properties prop = new Properties();
|
||||||
|
prop.put("theme", "white");
|
||||||
|
|
||||||
|
final String captchaHtml = captchaService.createRecaptchaHtml(null, prop);
|
||||||
|
request.setAttribute("captchaHtml", captchaHtml);
|
||||||
|
request.setAttribute("captchaEnabled", true);
|
||||||
|
}
|
||||||
|
return new ModelAndView("userRegistration", "user", new UserBean());
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "user/registration", method = RequestMethod.POST)
|
||||||
|
public ModelAndView registerUser(@ModelAttribute("user") UserBean userBean, @NotNull HttpServletRequest request, @NotNull BindingResult bindingResult) throws WiseMappingException {
|
||||||
|
ModelAndView result;
|
||||||
|
validateRegistrationForm(userBean, request, bindingResult);
|
||||||
|
if (bindingResult.hasErrors()) {
|
||||||
|
result = this.showRegistrationPage(request);
|
||||||
|
result.addObject("user", userBean);
|
||||||
|
} else {
|
||||||
|
final User user = new User();
|
||||||
|
|
||||||
|
// trim() the email email in order to remove spaces ...
|
||||||
|
user.setEmail(userBean.getEmail().trim());
|
||||||
|
user.setUsername(userBean.getUsername());
|
||||||
|
user.setFirstname(userBean.getFirstname());
|
||||||
|
user.setLastname(userBean.getLastname());
|
||||||
|
user.setPassword(userBean.getPassword());
|
||||||
|
userService.createUser(user, emailConfirmEnabled);
|
||||||
|
|
||||||
|
// Forward to the success view ...
|
||||||
|
result = new ModelAndView("userRegistrationSuccess");
|
||||||
|
result.addObject("confirmByEmail", emailConfirmEnabled);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private BindingResult validateRegistrationForm(@NotNull UserBean userBean, @NotNull HttpServletRequest request, @NotNull BindingResult bindingResult) {
|
||||||
|
final UserValidator userValidator = new UserValidator();
|
||||||
|
userValidator.setUserService(userService);
|
||||||
|
userValidator.setCaptchaService(captchaService);
|
||||||
|
userValidator.validate(userBean, bindingResult);
|
||||||
|
|
||||||
|
// If captcha is enabled, generate it ...
|
||||||
|
if (captchaEnabled) {
|
||||||
|
final String challenge = request.getParameter("recaptcha_challenge_field");
|
||||||
|
final String uresponse = request.getParameter("recaptcha_response_field");
|
||||||
|
|
||||||
|
final String remoteAddr = request.getRemoteAddr();
|
||||||
|
final ReCaptchaResponse reCaptchaResponse = captchaService.checkAnswer(remoteAddr, challenge, uresponse);
|
||||||
|
if (!reCaptchaResponse.isValid()) {
|
||||||
|
bindingResult.rejectValue("captcha", Messages.CAPTCHA_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bindingResult;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,20 +22,20 @@ import com.wisemapping.model.CollaborationRole;
|
|||||||
import com.wisemapping.model.Collaborator;
|
import com.wisemapping.model.Collaborator;
|
||||||
import com.wisemapping.model.User;
|
import com.wisemapping.model.User;
|
||||||
|
|
||||||
public class ColaboratorBean
|
public class CollaboratorBean
|
||||||
{
|
{
|
||||||
private CollaborationRole collaborationRole;
|
private CollaborationRole collaborationRole;
|
||||||
private boolean isUser;
|
private boolean isUser;
|
||||||
private Collaborator collaborator;
|
private Collaborator collaborator;
|
||||||
|
|
||||||
public ColaboratorBean(Collaborator collaborator, CollaborationRole role)
|
public CollaboratorBean(Collaborator collaborator, CollaborationRole role)
|
||||||
{
|
{
|
||||||
this.collaborator = collaborator;
|
this.collaborator = collaborator;
|
||||||
this.collaborationRole = role;
|
this.collaborationRole = role;
|
||||||
this.isUser = false;
|
this.isUser = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ColaboratorBean(User user, CollaborationRole role)
|
public CollaboratorBean(User user, CollaborationRole role)
|
||||||
{
|
{
|
||||||
this.collaborator = user;
|
this.collaborator = user;
|
||||||
this.collaborationRole = role;
|
this.collaborationRole = role;
|
@ -29,8 +29,8 @@ import java.util.*;
|
|||||||
|
|
||||||
public class MindMapBean {
|
public class MindMapBean {
|
||||||
private MindMap mindMap;
|
private MindMap mindMap;
|
||||||
private List<ColaboratorBean> viewers;
|
private List<CollaboratorBean> viewers;
|
||||||
private List<ColaboratorBean> colaborators;
|
private List<CollaboratorBean> colaborators;
|
||||||
|
|
||||||
public MindMapBean(final MindMap mindmap) {
|
public MindMapBean(final MindMap mindmap) {
|
||||||
this.mindMap = mindmap;
|
this.mindMap = mindmap;
|
||||||
@ -62,11 +62,11 @@ public class MindMapBean {
|
|||||||
return mindMap.isStarred(Utils.getUser());
|
return mindMap.isStarred(Utils.getUser());
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ColaboratorBean> getViewers() {
|
public List<CollaboratorBean> getViewers() {
|
||||||
return viewers;
|
return viewers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ColaboratorBean> getCollaborators() {
|
public List<CollaboratorBean> getCollaborators() {
|
||||||
return colaborators;
|
return colaborators;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,12 +86,12 @@ public class MindMapBean {
|
|||||||
return mindMap.getTags();
|
return mindMap.getTags();
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<ColaboratorBean> getColaboratorBy(Set<Collaboration> source, CollaborationRole role) {
|
private List<CollaboratorBean> getColaboratorBy(Set<Collaboration> source, CollaborationRole role) {
|
||||||
List<ColaboratorBean> col = new ArrayList<ColaboratorBean>();
|
List<CollaboratorBean> col = new ArrayList<CollaboratorBean>();
|
||||||
if (source != null) {
|
if (source != null) {
|
||||||
for (Collaboration mu : source) {
|
for (Collaboration mu : source) {
|
||||||
if (mu.getRole() == role) {
|
if (mu.getRole() == role) {
|
||||||
col.add(new ColaboratorBean(mu.getCollaborator(), mu.getRole()));
|
col.add(new CollaboratorBean(mu.getCollaborator(), mu.getRole()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -58,12 +58,12 @@ mail.supportEmail=root@localhost
|
|||||||
registration.email.enabled = false
|
registration.email.enabled = false
|
||||||
|
|
||||||
# Enable captcha confirmation
|
# Enable captcha confirmation
|
||||||
registration.recaptcha.enabled = false
|
registration.recaptcha.enabled = true
|
||||||
|
|
||||||
# ReCaptcha is the default captcha. Public and private keys are required.
|
# ReCaptcha is the default captcha. Public and private keys are required.
|
||||||
# More Info: http://www.google.com/recaptcha
|
# More Info: http://www.google.com/recaptcha .
|
||||||
registration.recaptcha.privateKey =
|
registration.recaptcha.privateKey = 6LeQ4tISAAAAAMfHMPRKyHupTfA-KE4QeTCnLXhK
|
||||||
registration.recaptcha.publicKey =
|
registration.recaptcha.publicKey = 6LeQ4tISAAAAALzCGKNgRv8UqsDx7Cb0vq4wbJBr
|
||||||
|
|
||||||
##################################################################################
|
##################################################################################
|
||||||
# Site configuration
|
# Site configuration
|
||||||
|
@ -77,9 +77,9 @@
|
|||||||
<put-attribute name="body" value="/jsp/userRegistration.jsp"/>
|
<put-attribute name="body" value="/jsp/userRegistration.jsp"/>
|
||||||
</definition>
|
</definition>
|
||||||
|
|
||||||
<definition name="userRegistrationConfirmation" extends="pageTemplate">
|
<definition name="userRegistrationSuccess" extends="pageTemplate">
|
||||||
<put-attribute name="title" value="USER_REGISTRATION"/>
|
<put-attribute name="title" value="USER_REGISTRATION"/>
|
||||||
<put-attribute name="body" value="/jsp/userRegistrationConfirmation.jsp"/>
|
<put-attribute name="body" value="/jsp/userRegistrationSuccess.jsp"/>
|
||||||
</definition>
|
</definition>
|
||||||
|
|
||||||
<definition name="login" extends="pageTemplate">
|
<definition name="login" extends="pageTemplate">
|
||||||
|
@ -74,7 +74,7 @@
|
|||||||
<value>/index.jsp</value>
|
<value>/index.jsp</value>
|
||||||
<value>/c/home</value>
|
<value>/c/home</value>
|
||||||
<value>/c/login</value>
|
<value>/c/login</value>
|
||||||
<value>/c/userRegistration</value>
|
<value>/c/user/registration</value>
|
||||||
<value>/c/captcha</value>
|
<value>/c/captcha</value>
|
||||||
<value>/c/publicView</value>
|
<value>/c/publicView</value>
|
||||||
<value>/service/*</value>
|
<value>/service/*</value>
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
<sec:http pattern="/favicon.ico" security="none"/>
|
<sec:http pattern="/favicon.ico" security="none"/>
|
||||||
|
|
||||||
<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/user/registration" security="none"/>
|
||||||
<sec:http pattern="/c/user/resetpassword" 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,24 +3,6 @@
|
|||||||
|
|
||||||
<beans>
|
<beans>
|
||||||
|
|
||||||
<bean id="userValidator" class="com.wisemapping.validator.UserValidator">
|
|
||||||
<property name="userService" ref="userService"/>
|
|
||||||
<property name="captchaService" ref="reCaptcha"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="userController" class="com.wisemapping.controller.UserRegistrationController">
|
|
||||||
<property name="sessionForm" value="false"/>
|
|
||||||
<property name="commandName" value="user"/>
|
|
||||||
<property name="commandClass" value="com.wisemapping.view.UserBean"/>
|
|
||||||
<property name="validator" ref="userValidator"/>
|
|
||||||
<property name="formView" value="userRegistration"/>
|
|
||||||
<property name="successView" value="userRegistrationConfirmation"/>
|
|
||||||
<property name="userService" ref="userService"/>
|
|
||||||
<property name="emailConfirmEnabled" value="${registration.email.enabled}"/>
|
|
||||||
<property name="captchaEnabled" value="${registration.recaptcha.enabled}"/>
|
|
||||||
<property name="captchaService" ref="reCaptcha"/>
|
|
||||||
</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>
|
||||||
@ -61,24 +43,4 @@
|
|||||||
<bean id="activationController" class="com.wisemapping.controller.ActivationController">
|
<bean id="activationController" class="com.wisemapping.controller.ActivationController">
|
||||||
<property name="userService" ref="userService"/>
|
<property name="userService" ref="userService"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
ans>
|
||||||
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
|
|
||||||
<property name="interceptors">
|
|
||||||
<list>
|
|
||||||
<ref bean="browserSupportInterceptor"/>
|
|
||||||
<ref bean="localeChangeInterceptor"/>
|
|
||||||
</list>
|
|
||||||
</property>
|
|
||||||
<property name="mappings">
|
|
||||||
<props>
|
|
||||||
<!-- Forms based -->
|
|
||||||
<prop key="userRegistration">usersController</prop>
|
|
||||||
<prop key="login">loginController</prop>
|
|
||||||
<prop key="activation">activationController</prop>
|
|
||||||
<prop key="changePassword">changePasswordController</prop>
|
|
||||||
<prop key="settings">settingsController</prop>
|
|
||||||
<prop key="editProfile">editProfileController</prop>
|
|
||||||
</props>
|
|
||||||
</property>
|
|
||||||
</bean>
|
|
||||||
</beans>
|
|
@ -196,7 +196,7 @@ function updateStatusToolbar() {
|
|||||||
// Can be executed by the owner ?
|
// Can be executed by the owner ?
|
||||||
var rowData = tableElem.dataTable().fnGetData(selectedRows[0]);
|
var rowData = tableElem.dataTable().fnGetData(selectedRows[0]);
|
||||||
if (rowData.role != 'owner') {
|
if (rowData.role != 'owner') {
|
||||||
$("#buttonsToolbar").find('#publishBtn').hide().end().find('#shareBtn').hide();
|
$("#buttonsToolbar").find('#publishBtn').hide().end().find('#shareBtn').hide().end().find('#renameBtn').hide();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$("#buttonsToolbar .act-multiple").show();
|
$("#buttonsToolbar .act-multiple").show();
|
||||||
|
@ -62,7 +62,7 @@
|
|||||||
<div id="register">
|
<div id="register">
|
||||||
<b><spring:message code="NOT_READY_A_USER"/></b>
|
<b><spring:message code="NOT_READY_A_USER"/></b>
|
||||||
<spring:message code="NOT_READY_A_USER_MESSAGE"/>
|
<spring:message code="NOT_READY_A_USER_MESSAGE"/>
|
||||||
<a href="c/userRegistration">
|
<a href="c/user/registration">
|
||||||
<spring:message code="JOIN_NOW"/>
|
<spring:message code="JOIN_NOW"/>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -33,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="c/userRegistration">
|
<a href="c/user/registration">
|
||||||
<spring:message code="JOIN_NOW"/>
|
<spring:message code="JOIN_NOW"/>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
@ -1,6 +1,4 @@
|
|||||||
<%@ include file="/jsp/init.jsp" %>
|
<%@ include file="/jsp/init.jsp" %>
|
||||||
|
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<div class="fform">
|
<div class="fform">
|
||||||
|
|
||||||
@ -35,23 +33,28 @@
|
|||||||
<form:errors path="retypePassword" cssClass="errorMsg"/>
|
<form:errors path="retypePassword" cssClass="errorMsg"/>
|
||||||
|
|
||||||
<c:if test="${requestScope.captchaEnabled}">
|
<c:if test="${requestScope.captchaEnabled}">
|
||||||
<form:errors path="captcha" cssClass="errorMsg"/>
|
|
||||||
${requestScope.captchaHtml}
|
${requestScope.captchaHtml}
|
||||||
|
<p>
|
||||||
|
<form:errors path="captcha" cssClass="errorMsg"/>
|
||||||
|
</p>
|
||||||
</c:if>
|
</c:if>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<p>
|
<p>
|
||||||
<spring:message code="TERM_OF_THE_SERVICE"/>
|
<spring:message code="TERM_OF_THE_SERVICE"/>
|
||||||
<spring:message code="WISEMAPPING_ACCOUNT_MESSAGE"/> <a href="c/termsOfUse"><spring:message
|
<spring:message code="WISEMAPPING_ACCOUNT_MESSAGE"/> <a href="c/termsOfUse"><spring:message
|
||||||
code="HERE"/></a>
|
code="HERE"/></a>.
|
||||||
<spring:message code="REGISTRATION_CLICK_ADVICE"/>
|
<spring:message code="REGISTRATION_CLICK_ADVICE"/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<input type="submit" value="<spring:message code="REGISTER" />" id="submitButton"
|
<input type="submit" value="<spring:message code="REGISTER"/>"
|
||||||
|
data-loading-text="<spring:message code="REGISTER"/> ..." id="submitButton"
|
||||||
class="btn btn-primary">
|
class="btn btn-primary">
|
||||||
<input type="button" value="<spring:message code="CANCEL"/>"
|
<input type="button" value="<spring:message code="CANCEL"/>"
|
||||||
onclick="window.location='c/<c:url value="maps/"/>'" class="btn">
|
onclick="window.location='c/<c:url value="maps/"/>'" class="btn">
|
||||||
</form:form>
|
</form:form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,30 +1,29 @@
|
|||||||
<%@ include file="/jsp/init.jsp" %>
|
<%@ include file="/jsp/init.jsp" %>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h1>
|
|
||||||
<spring:message code="USER_REGISTRATION"/>
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
|
|
||||||
<h2 style="font-weight:bold;">Thanks for signing up!</h2>
|
<h2 style="font-weight:bold;">Thanks for signing up!</h2>
|
||||||
<c:if test="${confirmByEmail==true}">
|
<c:if test="${confirmByEmail==true}">
|
||||||
<p>
|
<p>
|
||||||
You will receive a confirmation message shortly from WiseMapping. This message will ask you to activate your WiseMapping account.
|
You will receive a confirmation message shortly from WiseMapping. This message will ask you to activate your
|
||||||
|
WiseMapping account.
|
||||||
Please select the link to activate and start creating and sharing maps.
|
Please select the link to activate and start creating and sharing maps.
|
||||||
</p>
|
</p>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Thanks so much for your interest in WiseMapping.
|
Thanks so much for your interest in WiseMapping.
|
||||||
</p>
|
</p>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
If you have any questions or have any feedback, please don't hesitate to use the on line form.
|
If you have any questions or have any feedback, please don't hesitate to use the on line form.
|
||||||
We'd love to hear from you.
|
We'd love to hear from you.
|
||||||
</p>
|
</p>
|
||||||
</c:if>
|
</c:if>
|
||||||
<c:if test="${confirmByEmail==false}">
|
<c:if test="${confirmByEmail==false}">
|
||||||
<p>
|
<p>
|
||||||
Your account has been created successfully, click <a href="c/login">here</a> to sign in and start enjoying WiseMapping.
|
Your account has been created successfully, click <a href="c/login">here</a> to sign in and start enjoying
|
||||||
|
WiseMapping.
|
||||||
</p>
|
</p>
|
||||||
</c:if>
|
</c:if>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user