From 71eeac34fee9f5a53168e0872e5fb7b855c0b4c8 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@gmail.com> Date: 星期三, 12 二月 2025 21:22:55 +0800 Subject: [PATCH] # --- rsf-common/src/main/java/com/vincent/rsf/common/utils/Utils.java | 19 ++++++ rsf-server/src/main/java/com/vincent/rsf/server/common/service/EmailService.java | 6 + rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java | 26 ++++++-- rsf-server/src/main/java/com/vincent/rsf/server/system/controller/param/RegisterParam.java | 23 +++++++ rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java | 5 + rsf-server/src/main/resources/application.yml | 3 rsf-server/src/main/java/com/vincent/rsf/server/system/enums/EmailType.java | 18 ++++++ rsf-server/src/main/resources/application-dev.yml | 28 ++++++-- 9 files changed, 113 insertions(+), 17 deletions(-) diff --git a/rsf-common/src/main/java/com/vincent/rsf/common/utils/Utils.java b/rsf-common/src/main/java/com/vincent/rsf/common/utils/Utils.java index 06a5b0b..6123a36 100644 --- a/rsf-common/src/main/java/com/vincent/rsf/common/utils/Utils.java +++ b/rsf-common/src/main/java/com/vincent/rsf/common/utils/Utils.java @@ -6,6 +6,7 @@ import java.util.Iterator; import java.util.List; import java.util.Optional; +import java.util.concurrent.ThreadLocalRandom; import java.util.function.BiConsumer; import java.util.function.Function; import java.util.Map; @@ -304,4 +305,22 @@ return processed; } + public static String randomNumbers(int length) { + String baseString = "0123456789"; + + if (length < 1) { + length = 1; + } + + StringBuilder sb = new StringBuilder(length); + int baseLength = baseString.length(); + + for(int i = 0; i < length; ++i) { + int number = ThreadLocalRandom.current().nextInt(baseLength); + sb.append(baseString.charAt(number)); + } + + return sb.toString(); + } + } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java index 4a2d3fc..2a0e7ae 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java @@ -55,6 +55,11 @@ */ private String superUsername; + /** + * 楠岃瘉鐮侀暱搴� + */ + private Integer codeLength = 4; + public List<String> getSuperUserList() { return Arrays.stream(superUsername.split(",")).collect(Collectors.toList()); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java index f1e3471..7c31298 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java @@ -38,7 +38,9 @@ "/test/**", "/system/info", "/tenant/list", + "/email/code", "/login", + "/register", "/druid/**", "/swagger-ui.html", "/swagger-resources/**", diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/service/EmailService.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/service/EmailService.java index 3c33cfd..fa55f03 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/common/service/EmailService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/service/EmailService.java @@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSON; import com.vincent.rsf.common.utils.Utils; import com.vincent.rsf.framework.common.Cools; +import com.vincent.rsf.server.system.enums.EmailType; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -28,9 +29,10 @@ @SuppressWarnings("all") private JavaMailSender mailSender; - public boolean sendEmail(String to, String subject, Map<String, Object> param) { + public boolean sendEmail(String to, EmailType emailType, Map<String, Object> param) { - String content = "Your verification code is: ${code}"; + String subject = emailType.subject; + String content = emailType.content; if (!Cools.isEmpty(param) && !param.isEmpty()) { content = Utils.processTemplate(content, param); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java index 7149435..0eca7ad 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java @@ -2,6 +2,7 @@ import com.vincent.rsf.common.enums.SystemModeType; import com.vincent.rsf.common.utils.Utils; +import com.vincent.rsf.framework.common.BaseRes; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.server.common.annotation.OperationLog; @@ -10,6 +11,7 @@ import com.vincent.rsf.server.common.service.EmailService; import com.vincent.rsf.server.common.utils.JwtUtil; import com.vincent.rsf.server.system.controller.param.LoginParam; +import com.vincent.rsf.server.system.controller.param.RegisterParam; import com.vincent.rsf.server.system.controller.param.UpdatePasswordParam; import com.vincent.rsf.server.system.controller.result.LoginResult; import com.vincent.rsf.server.system.controller.result.MenuVo; @@ -18,16 +20,14 @@ import com.vincent.rsf.server.system.entity.Tenant; import com.vincent.rsf.server.system.entity.User; import com.vincent.rsf.server.system.entity.UserLogin; +import com.vincent.rsf.server.system.enums.EmailType; import com.vincent.rsf.server.system.enums.StatusType; import com.vincent.rsf.server.system.service.RoleMenuService; import com.vincent.rsf.server.system.service.TenantService; import com.vincent.rsf.server.system.service.UserLoginService; import com.vincent.rsf.server.system.service.UserService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @@ -58,8 +58,6 @@ @PostMapping("/login") public R login(@RequestBody LoginParam param, HttpServletRequest request) { // System.out.println(userService.encodePassword("123456")); - emailService.sendEmail("t1341870251@gmail.com", "Email Verification Code", Cools.add("code", "666")); - String username = param.getUsername(); Long tenantId = param.getTenantId(); User user = userService.getByUsername(username, tenantId); @@ -79,6 +77,22 @@ return R.ok("Sign In Success").add(new LoginResult(accessToken, user, tenant.getName())); } + @GetMapping("/email/code") + public R emailCode(@RequestParam("email") String email) { + if (Cools.isEmpty(email)) { + return R.parse(BaseRes.PARAM); + } + String code = Utils.randomNumbers(configProperties.getCodeLength()); + emailService.sendEmail(email, EmailType.REGISTER_VERIFY, Cools.add("code", code)); + return R.ok(); + } + + @PostMapping("/register") + public R register(@RequestBody RegisterParam param, HttpServletRequest request) { + + return R.ok(); + } + @GetMapping("/system/info") public R systemInfo() { SystemModeType systemMode = configProperties.getSystemMode(); diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/param/RegisterParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/param/RegisterParam.java new file mode 100644 index 0000000..351d82d --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/param/RegisterParam.java @@ -0,0 +1,23 @@ +package com.vincent.rsf.server.system.controller.param; + +import lombok.Data; + +import java.io.Serializable; + +/** + * Created by vincent on 1/30/2024 + */ +@Data +public class RegisterParam implements Serializable { + + private static final long serialVersionUID = 1L; + + private String email; + + private String username; + + private String password; + + private String code; + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/enums/EmailType.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/enums/EmailType.java new file mode 100644 index 0000000..bd11f60 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/enums/EmailType.java @@ -0,0 +1,18 @@ +package com.vincent.rsf.server.system.enums; + +public enum EmailType { + + LOGIN_VERIFY("Email Verification Code", "Your verification code is: ${code}."), + REGISTER_VERIFY("Email Verification Code", "Your verification code is: ${code}."), + FORGET_PASSWORD("Email Verification Code", "Your verification code is: ${code}."), + ; + + public final String subject; + public final String content; + + EmailType(String subject, String content) { + this.subject = subject; + this.content = content; + } + +} diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml index 4c4c204..ea93e7e 100644 --- a/rsf-server/src/main/resources/application-dev.yml +++ b/rsf-server/src/main/resources/application-dev.yml @@ -44,18 +44,30 @@ jmx: enabled: false mail: - from: t1731253606@163.com - host: smtp.163.com - port: 465 - username: t1731253606@163.com - password: FCqETysH8TfuPqkY + # 163 +# from: t1731253606@163.com +# host: smtp.163.com +# port: 465 +# username: t1731253606@163.com +# password: FCqETysH8TfuPqkY +# properties: +# mail: +# smtp: +# auth: true +# ssl: true +# socketFactory: +# class: javax.net.ssl.SSLSocketFactory + # gmail + from: whatsflow.team@gmail.com + host: smtp.gmail.com + port: 587 + username: whatsflow.team@gmail.com + password: elpc vfwk twnu uoyy properties: mail: smtp: auth: true - ssl: true - socketFactory: - class: javax.net.ssl.SSLSocketFactory + starttls.enable: true redis: host: 127.0.0.1 diff --git a/rsf-server/src/main/resources/application.yml b/rsf-server/src/main/resources/application.yml index 7008f3e..8533730 100644 --- a/rsf-server/src/main/resources/application.yml +++ b/rsf-server/src/main/resources/application.yml @@ -32,4 +32,5 @@ system-version: @pom.version@ system-mode: OFFLINE token-key: KUHSMcYQ4lePt3r6bckz0P13cBJyoonYqInThvQlUnbsFCIcCcZZAbWZ6UNFztYNYPhGdy6eyb8WdIz8FU2Cz396TyTJk3NI2rtXMHBOehRb4WWJ4MdYVVg2oWPyqRQ2 - super-username: root \ No newline at end of file + super-username: root + code-length: 6 \ No newline at end of file -- Gitblit v1.9.1