This commit is contained in:
MaxKey
2022-01-05 09:35:16 +08:00
parent 88b672726c
commit 06b6e8825f
16 changed files with 302 additions and 288 deletions

View File

@@ -28,9 +28,9 @@ import org.apache.ibatis.session.SqlSessionFactory;
import org.maxkey.configuration.ApplicationConfig;
import org.maxkey.constants.ConstantsStatus;
import org.maxkey.crypto.password.PasswordReciprocal;
import org.maxkey.entity.Registration;
import org.maxkey.entity.Register;
import org.maxkey.entity.UserInfo;
import org.maxkey.persistence.service.RegistrationService;
import org.maxkey.persistence.service.RegisterService;
import org.maxkey.persistence.service.UserInfoService;
import org.maxkey.util.DateUtils;
import org.maxkey.util.StringUtils;
@@ -43,8 +43,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@@ -52,12 +54,12 @@ import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping(value={"/registration"})
public class RegistrationController {
private static Logger _logger = LoggerFactory.getLogger(RegistrationController.class);
@RequestMapping(value={"/signup"})
public class RegisterController {
private static Logger _logger = LoggerFactory.getLogger(RegisterController.class);
@Autowired
RegistrationService registrationService;
RegisterService registerService;
@Autowired
@Qualifier("applicationConfig")
@@ -73,29 +75,35 @@ public class RegistrationController {
@RequestMapping(value={"/forward"})
public ModelAndView forward() {
_logger.debug("Registration /registration/register.");
return new ModelAndView("registration/register");
_logger.debug("register /register/register.");
return new ModelAndView("register/register");
}
@RequestMapping(value={"/forward/email"})
public ModelAndView forwardEmail() {
_logger.debug("register /register/register.");
return new ModelAndView("register/registerInst");
}
//邮件验证注册
@RequestMapping(value={"/register"})
public ModelAndView reg(@ModelAttribute("registration") Registration registration) {
_logger.debug("Registration /registration/register.");
_logger.debug(""+registration);
ModelAndView modelAndView= new ModelAndView("registration/registered");
public ModelAndView reg(@ModelAttribute("register") Register register) {
_logger.debug("register /register/register.");
_logger.debug(""+register);
ModelAndView modelAndView= new ModelAndView("register/registered");
UserInfo userInfo =registrationService.queryUserInfoByEmail(registration.getWorkEmail());
UserInfo userInfo = registerService.findByEmail(register.getWorkEmail());
if(userInfo!=null){
modelAndView.addObject("registered", 1);
return modelAndView;
}
registration.setId(registration.generateId());
registrationService.insert(registration);
register.setId(register.generateId());
registerService.insert(register);
HtmlEmail email = new HtmlEmail();
try {
try {
email.setHostName(applicationConfig.getEmailConfig().getSmtpHost());
email.setSmtpPort(applicationConfig.getEmailConfig().getPort());
email.setAuthenticator(new DefaultAuthenticator(
@@ -103,11 +111,11 @@ public class RegistrationController {
applicationConfig.getEmailConfig().getPassword()
));
email.addTo(registration.getWorkEmail(), registration.getLastName()+registration.getFirstName());
email.addTo(register.getWorkEmail(), register.getDisplayName());
email.setFrom(applicationConfig.getEmailConfig().getSender(), "MaxKey");
email.setSubject("MaxKey Identity & Access Registration activate Email .");
String activateUrl=WebContext.getHttpContextPath()+"/registration/forward/activate/"+registration.getId();
String activateUrl=WebContext.getHttpContextPath()+"/register/forward/activate/"+register.getId();
// set the html message
@@ -125,43 +133,41 @@ public class RegistrationController {
} catch (EmailException e) {
e.printStackTrace();
}
modelAndView.addObject("registered", 0);
modelAndView.addObject("registered", 0);
return modelAndView;
}
@RequestMapping(value={"/forward/activate/{id}"})
@GetMapping(value={"/forward/activate/{id}"})
public ModelAndView confirm(@PathVariable("id") String id) {
_logger.debug("Registration /registration/forward/activate.");
Registration registration=registrationService.get(id);
ModelAndView mav=new ModelAndView("registration/activate");
if(registration!=null){
mav.addObject("model", registration);
_logger.debug("register /register/forward/activate.");
Register register=registerService.get(id);
ModelAndView mav=new ModelAndView("register/activate");
if(register!=null){
mav.addObject("model", register);
}
return mav;
}
@RequestMapping(value={"/activate/{id}"})
@PostMapping(value={"/activate/{id}"})
public ModelAndView setPassWord(@PathVariable("id") String id,
@RequestParam String password,
@RequestParam String confirmpassword) {
_logger.debug("Registration /registration/setpassword.");
ModelAndView modelAndView=new ModelAndView("registration/activated");
_logger.debug("register /register/setpassword.");
ModelAndView modelAndView=new ModelAndView("register/activated");
if(password.equals(confirmpassword)){
Registration registration=registrationService.get(id);
if(registration!=null){
Register register=registerService.get(id);
if(register!=null){
SqlSession sqlSession = SqlSessionUtils.getSqlSession(
WebContext.getBean("sqlSessionFactory",SqlSessionFactory.class));
sqlSession.commit(false);
UserInfo userInfo=new UserInfo();
userInfo.setUsername(registration.getWorkEmail());
userInfo.setFamilyName(registration.getLastName());
userInfo.setGivenName(registration.getFirstName());
userInfo.setUsername(register.getWorkEmail());
userInfo.setDisplayName(register.getDisplayName());
userInfo.setWorkPhoneNumber(registration.getWorkPhone());
userInfo.setEmail(registration.getWorkEmail());
userInfo.setWorkPhoneNumber(register.getWorkPhone());
userInfo.setEmail(register.getWorkEmail());
userInfo.setStatus(ConstantsStatus.ACTIVE);
userInfo.setDecipherable(PasswordReciprocal.getInstance().encode(password));
@@ -173,7 +179,7 @@ public class RegistrationController {
userInfo.setPasswordLastSetTime(DateUtils.format(new Date(), DateUtils.FORMAT_DATE_YYYY_MM_DD_HH_MM_SS));
userInfoService.insert(userInfo);
registrationService.remove(id);
registerService.remove(id);
sqlSession.commit(true);
modelAndView.addObject("activate", 1);
}else{
@@ -189,28 +195,36 @@ public class RegistrationController {
@RequestMapping(value={"/registeron"})
@ResponseBody
public Message registeron(UserInfo userInfo,@RequestParam String emailMobile) throws ServletException, IOException {
if(StringUtils.isEmpty(emailMobile)) {
return new Message(WebContext.getI18nValue("register.emailMobile.error"),"1");
}
if(StringUtils.isValidEmail(emailMobile)) {
userInfo.setEmail(emailMobile);
}
if(StringUtils.isValidMobileNo(emailMobile)) {
userInfo.setMobile(emailMobile);
}
if(!(StringUtils.isValidEmail(emailMobile)||StringUtils.isValidMobileNo(emailMobile))) {
return new Message(WebContext.getI18nValue("register.emailMobile.error"),"1");
}
UserInfo temp=userInfoService.findByEmailMobile(emailMobile);
UserInfo temp = userInfoService.findByEmailMobile(emailMobile);
if(temp!=null) {
return new Message(WebContext.getI18nValue("register.emailMobile.exist"),"1");
}
temp=userInfoService.findByUsername(userInfo.getUsername());
temp = userInfoService.findByUsername(userInfo.getUsername());
if(temp!=null) {
return new Message(WebContext.getI18nValue("register.user.error"),"1");
}
userInfo.setStatus(ConstantsStatus.ACTIVE);
if(userInfoService.insert(userInfo)) {
return new Message(WebContext.getI18nValue("login.text.register.success"),"0");
}

View File

@@ -72,6 +72,16 @@ login.text.register.error=\u6CE8\u518C\u5931\u8D25
register.user.error=\u767B\u9646\u8D26\u53F7\u5DF2\u5B58\u5728
register.emailMobile.error=\u90AE\u7BB1\u6216\u624B\u673A\u683C\u5F0F\u9519\u8BEF
register.emailMobile.exist=\u90AE\u7BB1\u6216\u624B\u673A\u5DF2\u5B58\u5728
register.displayName=\u59D3\u540D
register.workEmail=\u7535\u5B50\u90AE\u4EF6
register.workPhone=\u624B\u673A
register.instName=\u516C\u53F8
register.employees=\u5458\u5DE5
register.employees.20=1-20\u540D\u5458\u5DE5
register.employees.100=20-100\u540D\u5458\u5DE5
register.employees.500=100-500\u540D\u5458\u5DE5
register.employees.1000=500-1000\u540D\u5458\u5DE5
register.employees.2000=\u8D85\u8FC71000\u540D\u5458\u5DE5
login.password.expired=\u5BC6\u7801\u8FC7\u671F
login.password.expired.tip=\u5BC6\u7801\u8FC7\u671F\uFF0C\u8BF7\u4FEE\u6539\u5BC6\u7801

View File

@@ -71,6 +71,16 @@ login.text.register.error=Register error
register.user.error=username exist
register.emailMobile.error=email or mobile error
register.emailMobile.exist=email or mobile exist
register.displayName=Name
register.workEmail=Email
register.workPhone=Phone
register.instName=Company
register.employees=Employees
register.employees.20=1-20 Employees
register.employees.100=20-100 Employees
register.employees.500=100-500 Employees
register.employees.1000=500-1000 Employees
register.employees.2000=1000 + Employees
login.password.expired=Password Expired
login.password.expired.tip=Password expired, please change password

View File

@@ -72,6 +72,16 @@ login.text.register.error=\u6CE8\u518C\u5931\u8D25
register.user.error=\u767B\u9646\u8D26\u53F7\u5DF2\u5B58\u5728
register.emailMobile.error=\u90AE\u7BB1\u6216\u624B\u673A\u683C\u5F0F\u9519\u8BEF
register.emailMobile.exist=\u90AE\u7BB1\u6216\u624B\u673A\u5DF2\u5B58\u5728
register.displayName=\u59D3\u540D
register.workEmail=\u7535\u5B50\u90AE\u4EF6
register.workPhone=\u624B\u673A
register.instName=\u516C\u53F8
register.employees=\u5458\u5DE5
register.employees.20=1-20\u540D\u5458\u5DE5
register.employees.100=20-100\u540D\u5458\u5DE5
register.employees.500=100-500\u540D\u5458\u5DE5
register.employees.1000=500-1000\u540D\u5458\u5DE5
register.employees.2000=\u8D85\u8FC71000\u540D\u5458\u5DE5
login.password.expired=\u5BC6\u7801\u8FC7\u671F
login.password.expired.tip=\u5BC6\u7801\u8FC7\u671F\uFF0C\u8BF7\u4FEE\u6539\u5BC6\u7801

View File

@@ -111,7 +111,7 @@
</td>
</tr>
<tr>
<td id="register"><a href="<@base />/registration/forward"><div><@locale code="login.text.register"/></div></a></td>
<td id="register"><a href="<@base />/signup/forward"><div><@locale code="login.text.register"/></div></a></td>
</tr>
</table>
</td>

View File

@@ -14,7 +14,7 @@
<div class="col-md-2"></div>
<div class="col-md-8">
<form id="actionForm"
action="<@base/>/registration/registeron"
action="<@base/>/register/registeron"
forward="<@base/>/login"
method="post" class="needs-validation" novalidate>
<table class="table table-bordered">

View File

@@ -0,0 +1,66 @@
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<#include "../layout/header.ftl">
<#include "../layout/common.cssjs.ftl">
</head>
<body >
<div id="top">
<#include "../layout/nologintop.ftl">
</div>
<div class="container">
<div class="row">
<div class="col-md-2"></div>
<div class="col-md-8">
<form id="actionForm"
action="<@base/>/register/register"
forward="<@base/>/login"
method="post" class="needs-validation" novalidate>
<table class="table table-bordered">
<tr>
<td><@locale code="register.displayName"/></td>
<td><input required="" class="form-control" type='text' id='displayName' name='displayName' tabindex="1"/></td>
</tr>
<tr>
<td><@locale code="register.workEmail"/></td>
<td><input required="" type="text" id="workEmail" name="workEmail" class="form-control" title="" value="" tabindex="2"/></td>
</tr>
<tr>
<td><@locale code="register.workPhone"/></td>
<td><input required="" type="text" id="workPhone" name="workPhone" class="form-control" title="" value="" tabindex="3"/></td>
</tr>
<tr>
<td><@locale code="register.instName"/></td>
<td><input required="" class="form-control" type='text' id='instName' name='instName' tabindex="4"/></td>
</tr>
<tr>
<td><@locale code="register.employees"/></td>
<td>
<select class="form-control" name="employees" >
<option value="20" selected ><@locale code="register.employees.20" /></option>
<option value="100" ><@locale code="register.employees.100" /></option>
<option value="500" ><@locale code="register.employees.500" /></option>
<option value="1000" ><@locale code="register.employees.1000" /></option>
<option value="2000" ><@locale code="register.employees.2000" /></option>
</select>
</td>
</tr>
<tr>
<td><@locale code="login.text.captcha"/></td>
<td><input required="" class="form-control" type='text' id="j_captcha" name="captcha" tabindex="6" value="" style="float: left;"/><img id="j_captchaimg" class="captcha-image" src="<@base/>/captcha"/></td>
</tr>
<tr>
<td colspan="2"><input class="button btn btn-lg btn-primary btn-block" type="submit" value="<@locale code="login.text.register" />"/></td>
</tr>
</table>
</form>
</div>
<div class="col-md-2"></div>
</div >
</div>
<div id="footer">
<#include "../layout/footer.ftl">
</div>
</body>
</html>