#
luxiaotao1123
2025-02-12 71eeac34fee9f5a53168e0872e5fb7b855c0b4c8
#
2个文件已添加
7个文件已修改
130 ■■■■ 已修改文件
rsf-common/src/main/java/com/vincent/rsf/common/utils/Utils.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/service/EmailService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/controller/param/RegisterParam.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/enums/EmailType.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/application-dev.yml 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/application.yml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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();
    }
}
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());
    }
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/**",
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);
        }
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();
rsf-server/src/main/java/com/vincent/rsf/server/system/controller/param/RegisterParam.java
New file
@@ -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;
}
rsf-server/src/main/java/com/vincent/rsf/server/system/enums/EmailType.java
New file
@@ -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;
    }
}
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
rsf-server/src/main/resources/application.yml
@@ -32,4 +32,5 @@
  system-version: @pom.version@
  system-mode: OFFLINE
  token-key: KUHSMcYQ4lePt3r6bckz0P13cBJyoonYqInThvQlUnbsFCIcCcZZAbWZ6UNFztYNYPhGdy6eyb8WdIz8FU2Cz396TyTJk3NI2rtXMHBOehRb4WWJ4MdYVVg2oWPyqRQ2
  super-username: root
  super-username: root
  code-length: 6