#
vincentlu
19 小时以前 1bbfdfcecf243ba36512b59da80e41602ad50263
#
2个文件已添加
4个文件已修改
151 ■■■■■ 已修改文件
zy-acs-common/src/main/java/com/zy/acs/common/utils/Utils.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/page/settings/SecuritySettings.jsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/common/service/EmailService.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/AuthController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/param/UpdatePasswordParam.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/system/enums/EmailType.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/utils/Utils.java
@@ -2,10 +2,8 @@
import com.zy.acs.framework.common.Cools;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Optional;
import java.util.*;
import java.util.concurrent.ThreadLocalRandom;
import java.util.function.BiConsumer;
import java.util.function.Function;
@@ -292,4 +290,33 @@
        return snakeCaseField + (order.isEmpty() ? "" : " " + order);
    }
    public static String processTemplate(String template, Map<String, Object> params) {
        if (template == null || params == null) {
            return template;
        }
        String processed = template;
        for (Map.Entry<String, Object> entry : params.entrySet()) {
            processed = processed.replace("${" + entry.getKey() + "}", entry.getValue().toString());
        }
        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();
    }
}
zy-acs-flow/src/page/settings/SecuritySettings.jsx
@@ -114,10 +114,10 @@
                        defaultValue=""
                        rules={{
                            required: translate('ra.validation.required'),
                            pattern: {
                                value: /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d\.]{6,13}$/,
                                message: translate('page.settings.resetPwd.tip.pwdInputLimit'),
                            },
                            // pattern: {
                            //     value: /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d\.]{6,13}$/,
                            //     message: translate('page.settings.resetPwd.tip.pwdInputLimit'),
                            // },
                            validate: (value) => {
                                if (value === oldPasswordVal) {
                                    return translate('page.settings.resetPwd.tip.pwdNotSameAsOld');
zy-acs-manager/src/main/java/com/zy/acs/manager/common/service/EmailService.java
New file
@@ -0,0 +1,74 @@
package com.zy.acs.manager.common.service;
import com.alibaba.fastjson.JSON;
import com.zy.acs.common.utils.Utils;
import com.zy.acs.framework.common.Cools;
import com.zy.acs.manager.system.enums.EmailType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Slf4j
@Service
public class EmailService {
    private static final String EMAIL_REGEX = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";
//    @Value("${spring.mail.username}")
    private String from;
//    @Autowired
//    @SuppressWarnings("all")
//    private JavaMailSender mailSender;
    public boolean sendEmail(String to, EmailType emailType, Map<String, Object> param) {
        String subject = emailType.subject;
        String content = emailType.content;
        if (!Cools.isEmpty(param) && !param.isEmpty()) {
            content = Utils.processTemplate(content, param);
        }
        boolean sendRes = this.send(this.from, to, subject, content);
        if (sendRes) {
            log.info("Email sent successfully. To: {}, Subject: {}, Parameter: {}"
                    , to
                    , subject
                    , JSON.toJSONString(param));
        }
        return sendRes;
    }
    public boolean send(String from, String to, String subject, String content) {
//        try {
//            MimeMessage message = mailSender.createMimeMessage();
//            message.setFrom(from);
//
//            MimeMessageHelper helper = new MimeMessageHelper(message, true);
//            helper.setTo(to);
//            helper.setSubject(subject);
//            helper.setText(content);
//
//            mailSender.send(message);
//            return true;
//        } catch (MailException | MessagingException e) {
//            log.error(this.getClass().getSimpleName(), e);
//            return false;
//        }
        return true;
    }
    public boolean isValid(String email) {
        if (Cools.isEmpty(email)) {
            return false;
        }
        Pattern pattern = Pattern.compile(EMAIL_REGEX);
        Matcher matcher = pattern.matcher(email);
        return matcher.matches();
    }
}
zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/AuthController.java
@@ -1,12 +1,14 @@
package com.zy.acs.manager.system.controller;
import com.zy.acs.common.utils.Utils;
import com.zy.acs.framework.common.BaseRes;
import com.zy.acs.framework.common.Cools;
import com.zy.acs.framework.common.R;
import com.zy.acs.manager.common.annotation.OperationLog;
import com.zy.acs.manager.common.config.ConfigProperties;
import com.zy.acs.manager.common.domain.BusinessRes;
import com.zy.acs.manager.common.security.JwtSubject;
import com.zy.acs.manager.common.service.EmailService;
import com.zy.acs.manager.common.utils.JwtUtil;
import com.zy.acs.manager.manager.enums.StatusType;
import com.zy.acs.manager.system.controller.param.LoginParam;
@@ -21,7 +23,7 @@
import com.zy.acs.manager.system.service.TenantService;
import com.zy.acs.manager.system.service.UserLoginService;
import com.zy.acs.manager.system.service.UserService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -48,6 +50,8 @@
    private RoleMenuService roleMenuService;
    @Resource
    private TenantService tenantService;
    @Autowired
    private EmailService emailService;
    @GetMapping("/system/info")
    public R systemInfo() {
@@ -106,10 +110,10 @@
            if (!emailService.isValid(user.getEmail())) {
                return R.parse(BusinessRes.INVALID_EMAIL);
            }
            User one = userService.getByEmail(user.getEmail(), null);
            if (null != one  && !one.getId().equals(user.getId())) {
                return R.parse(BusinessRes.EMAIL_EXIT);
            }
//            User one = userService.getByEmail(user.getEmail(), null);
//            if (null != one  && !one.getId().equals(user.getId())) {
//                return R.parse(BusinessRes.EMAIL_EXIT);
//            }
        }
        if (userService.updateById(user)) {
            return R.ok("Save Success").add(userService.getById(user.getId()));
zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/param/UpdatePasswordParam.java
@@ -11,6 +11,6 @@
    private String oldPassword;
    private String password;
    private String newPassword;
}
zy-acs-manager/src/main/java/com/zy/acs/manager/system/enums/EmailType.java
New file
@@ -0,0 +1,18 @@
package com.zy.acs.manager.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;
    }
}