|
|
@@ -1,13 +1,36 @@
|
|
|
package cn.seecoder.fdroidrepository.Service.ServiceImpl;
|
|
|
|
|
|
+
|
|
|
import cn.seecoder.fdroidrepository.DataObject.User;
|
|
|
import cn.seecoder.fdroidrepository.Mapper.UserMapper;
|
|
|
import cn.seecoder.fdroidrepository.Service.UserService;
|
|
|
+import cn.seecoder.fdroidrepository.utils.MailClient;
|
|
|
+import cn.seecoder.fdroidrepository.utils.Tools;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import org.thymeleaf.TemplateEngine;
|
|
|
+import org.thymeleaf.context.Context;
|
|
|
+
|
|
|
+import java.util.Date;
|
|
|
+import java.util.UUID;
|
|
|
+
|
|
|
@Service
|
|
|
public class UserServiceImpl implements UserService {
|
|
|
+
|
|
|
+ @Value("${community.path.domain}")
|
|
|
+ private String domain;
|
|
|
+
|
|
|
+ @Value("${server.servlet.context-path}")
|
|
|
+ private String contextPath;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MailClient mailClient;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TemplateEngine templateEngine;
|
|
|
+
|
|
|
@Autowired
|
|
|
private UserMapper userMapper;
|
|
|
|
|
|
@@ -18,7 +41,35 @@ public class UserServiceImpl implements UserService {
|
|
|
|
|
|
@Override
|
|
|
public void save(User user) {
|
|
|
+
|
|
|
+ // register user
|
|
|
+ user.setSalt(UUID.randomUUID().toString().substring(0,5));
|
|
|
+ user.setPassword(Tools.md5(user.getPassword()+user.getSalt()));
|
|
|
+ user.setActive(false);
|
|
|
+ user.setCreateTime(new Date());
|
|
|
+ user.setActivationCode(Tools.generateUUID());
|
|
|
userMapper.save(user);
|
|
|
+
|
|
|
+
|
|
|
+ //send email
|
|
|
+ Context context = new Context();
|
|
|
+ context.setVariable("email",user.getEmail());
|
|
|
+ String url = domain + contextPath + "/api/users/activation/" + user.getUserId() + "/" + user.getActivationCode();
|
|
|
+ context.setVariable("url",url);
|
|
|
+ String content = templateEngine.process("mail/activation",context);
|
|
|
+ mailClient.sendMail(user.getEmail(),"activate account",content);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public USER_STATUS activate(int userId, String code) {
|
|
|
+ User user=userMapper.selectByUserId(userId);
|
|
|
+ if(user.isActive()){
|
|
|
+ return USER_STATUS.REPEAT_ACTIVATE;
|
|
|
+ }else if(user.getActivationCode().equals(code)){
|
|
|
+ return USER_STATUS.START_ACTIVATE;
|
|
|
+ }else{
|
|
|
+ return USER_STATUS.FAIL_ACTIVATE;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -26,4 +77,6 @@ public class UserServiceImpl implements UserService {
|
|
|
User existingUser = findByUsername(username);
|
|
|
return existingUser == null;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}
|