瀏覽代碼

add: 绑定邮箱

guo00guo 5 年之前
父節點
當前提交
25b915c22e

+ 11 - 0
site/pom.xml

@@ -121,6 +121,17 @@
 			<artifactId>shiro-ehcache</artifactId>
 			<version>1.3.2</version>
 		</dependency>
+		<dependency>
+			<groupId>commons-validator</groupId>
+			<artifactId>commons-validator</artifactId>
+			<version>1.4.1</version>
+		</dependency>
+		<!-- kaptcha verification code -->
+		<dependency>
+			<groupId>com.github.penggle</groupId>
+			<artifactId>kaptcha</artifactId>
+			<version>2.3.2</version>
+		</dependency>
 	</dependencies>
 
 	<build>

+ 41 - 0
site/src/main/java/com/mooctest/crowd/site/anticorruption/impl/data/UserCommon.java

@@ -0,0 +1,41 @@
+package com.mooctest.crowd.site.anticorruption.impl.data;
+
+import com.mooctest.crowd.site.command.RestPasswordCommand;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserCommon extends UserInfo {
+   private Long id;
+
+   private String password;
+
+   private String verifyCode;
+
+   private String password2;
+
+   private String oldPassword;
+
+   private String thirdPartyId;
+
+   private String thirdPartyName;
+
+   private String headImgUrl;
+
+   private String from;
+
+   private String openid;
+
+   private String unionid;
+
+   public UserCommon(RestPasswordCommand command){
+      this.password = command.getPassword();
+      this.oldPassword = command.getOldPassword();
+      this.verifyCode = command.getVerifyCode();
+      this.password2 = command.getPassword2();
+      this.id = command.getId();
+   }
+}

+ 20 - 0
site/src/main/java/com/mooctest/crowd/site/command/RestPasswordCommand.java

@@ -0,0 +1,20 @@
+package com.mooctest.crowd.site.command;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.5 14:24
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class RestPasswordCommand {
+    private Long id;
+    private String oldPassword;
+    private String password;
+    private String password2;
+    private String verifyCode;
+}

+ 36 - 0
site/src/main/java/com/mooctest/crowd/site/configuration/CaptchaConfiguration.java

@@ -0,0 +1,36 @@
+package com.mooctest.crowd.site.configuration;
+
+import com.google.code.kaptcha.Constants;
+import com.google.code.kaptcha.impl.DefaultKaptcha;
+import com.google.code.kaptcha.util.Config;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.Properties;
+
+/**
+ * @author sean
+ * @date 2017-03-21.
+ */
+@Configuration
+public class CaptchaConfiguration {
+
+    @Bean
+    public DefaultKaptcha getKaptchaBean() {
+        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
+        Properties properties = new Properties();
+        properties.setProperty(Constants.KAPTCHA_BORDER, "no");
+//        properties.setProperty(Constants.KAPTCHA_BORDER, "yes");
+//        properties.setProperty(Constants.KAPTCHA_BORDER_COLOR, "105,179,90");
+        properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue");
+        properties.setProperty(Constants.KAPTCHA_IMAGE_WIDTH, "140");
+        properties.setProperty(Constants.KAPTCHA_IMAGE_HEIGHT, "45");
+        properties.setProperty(Constants.KAPTCHA_SESSION_KEY, "code");
+        properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_STRING, "0123456789");
+        properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "6");
+        Config config = new Config(properties);
+        defaultKaptcha.setConfig(config);
+        return defaultKaptcha;
+    }
+
+}

+ 71 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CaptchaController.java

@@ -0,0 +1,71 @@
+package com.mooctest.crowd.site.controller;
+
+import com.google.code.kaptcha.impl.DefaultKaptcha;
+import com.mooctest.crowd.domain.util.EncryptionUtil;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.session.Session;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.imageio.ImageIO;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.awt.image.BufferedImage;
+
+/**
+ * @author sean
+ * @date 2017-03-21.
+ */
+@RestController
+public class CaptchaController extends BaseController {
+
+    @Autowired
+    private DefaultKaptcha captchaProducer;
+
+//    @Autowired
+//    private VerificationLogic verificationLogic;
+
+    @RequestMapping(value = "/api/common/captcha")
+    public ModelAndView getKaptchaImage(HttpServletRequest request,
+                                        HttpServletResponse response) throws Exception {
+
+        response.setDateHeader("Expires", 0);
+        response.setHeader("Cache-Control",
+                "no-store, no-cache, must-revalidate");
+        response.addHeader("Cache-Control", "post-check=0, pre-check=0");
+        response.setHeader("Pragma", "no-cache");
+        response.setContentType("image/jpeg");
+
+        String capText = captchaProducer.createText();
+
+        try {
+            Session session = SecurityUtils.getSubject().getSession();
+            String md5Captcha = EncryptionUtil.encryptMD5Hex(capText);
+            session.setAttribute("captchaCode" , md5Captcha);
+
+        } catch (Exception e) {
+            LOG.error("", e);
+        }
+
+        BufferedImage bi = captchaProducer.createImage(capText);
+        System.out.println("capText " + capText);
+        ServletOutputStream out = response.getOutputStream();
+        ImageIO.write(bi, "jpg", out);
+        try {
+            out.flush();
+        } finally {
+            out.close();
+        }
+        return null;
+
+    }
+
+//    @RequestMapping(value = UrlConstants.API_COMMON + "captcha/mobile/{mobile:\\d+}", method = RequestMethod.POST)
+//    public void sendMobileCaptcha(@PathVariable("mobile") String mobile) {
+//        verificationLogic.sendMobileVerfication(mobile);
+//    }
+
+}

+ 22 - 0
site/src/main/java/com/mooctest/crowd/site/controller/UserController.java

@@ -3,8 +3,12 @@ package com.mooctest.crowd.site.controller;
 import com.mooctest.crowd.domain.exception.*;
 import com.mooctest.crowd.site.annotation.LoginRequired;
 import com.mooctest.crowd.site.annotation.SysAdminRequired;
+import com.mooctest.crowd.site.anticorruption.impl.data.UserCommon;
+import com.mooctest.crowd.site.anticorruption.impl.data.UserInfo;
 import com.mooctest.crowd.site.command.*;
 import com.mooctest.crowd.site.data.dto.UserDTO;
+import com.mooctest.crowd.site.data.response.ResponseVO;
+import com.mooctest.crowd.site.data.response.ServerCode;
 import com.mooctest.crowd.site.data.vo.BaseAuthVO;
 import com.mooctest.crowd.site.data.vo.EnterpriseAuthVO;
 import com.mooctest.crowd.site.data.vo.PersonalAuthVO;
@@ -64,6 +68,24 @@ public class UserController {
     }
 
     /**
+     * 修改密码
+     */
+    @RequestMapping(value = "/password/reset", method = RequestMethod.PUT)
+    public ResponseVO<UserCommon> resetPassword(@RequestBody RestPasswordCommand restPasswordCommand, BindingResult result) {
+        if (result.hasErrors())
+            throw new BadRequestException(result.getFieldError().getDefaultMessage());
+        return new ResponseVO<>(ServerCode.SUCCESS, userService.restPassword(restPasswordCommand));
+    }
+
+    /**
+     * 获取邮箱验证码
+     */
+    @RequestMapping(value = "/verify/email", method = RequestMethod.PUT)
+    public ResponseVO<Boolean> verifyMail(@RequestBody UserInfo userInfo) {
+        return new ResponseVO<>(ServerCode.SUCCESS, userService.verifyMail(userInfo.getEmail()));
+    }
+
+    /**
      * 申请个人实名认证
      * @param userId
      * @param command

File diff suppressed because it is too large
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/service/UserService.java


File diff suppressed because it is too large
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/UserServiceImpl.java


+ 26 - 1
site/src/main/resources/application.yml

@@ -1,6 +1,6 @@
 spring:
   profiles:
-    active: dev
+    active: dev-localhost
   cache:
     guava:
       spec: expireAfterWrite=30s
@@ -82,6 +82,31 @@ website:
 
 ---
 spring:
+  profiles: dev-localhost
+  datasource:
+    url: jdbc:mysql://101.37.175.111:3306/crowd-test-service?useSSL=false&useUnicode=yes&characterEncoding=UTF-8
+    username: mooctest
+    password: secr3t!
+  redis:
+    host: 59.42.10.53
+    pool: 6379
+    password: '#2019@callforttest@!'
+    jedis:
+      pool:
+        max-active: 8
+        max-idle: 8
+        max-wait: -1
+        min-idle: 0
+    database: 6
+user:
+  service:
+    baseUrl: http://127.0.0.1:8081
+
+website:
+  domain: mooctest.net
+
+---
+spring:
   profiles: dev-pre
   datasource:
     url: jdbc:mysql://101.37.175.111:3306/crowd-test-service-pre?useSSL=false&useUnicode=yes&characterEncoding=UTF-8

Some files were not shown because too many files changed in this diff