<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="utf-8">
    <title>修改密码</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" th:href="@{/lib/layui/css/layui.css}" media="all">
    <link rel="stylesheet" th:href="@{/css/public.css}" media="all">
    <style>
        .layui-form-item .layui-input-company {
            width: auto;
            padding-right: 10px;
            line-height: 38px;
            font-weight: bold;
        }
        .layuimini-container {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            font-size: 16px;
        }

        .layuimini-main {
            width: 600px; /* Adjust width as needed */
        }
        .layuimini-container .layuimini-main .layui-input-block tip {
            font-size: 12px;
            position: relative;
            display: inline-block;
            margin-left: 5px; /* 调整注释与输入框之间的距离 */
            color: red; /* 设置注释的颜色 */
            line-height: 14px;
        }

    </style>
</head>
<body>
<div class="layuimini-container">
    <div class="layuimini-main">

        <div class="layui-form layuimini-form">
            <div class="layui-form-item">
                <label class="layui-form-label required">旧密码</label>
                <div class="layui-input-block">
                    <input type="password" name="old_password" lay-verify="required" lay-reqtext="旧密码不能为空"
                           placeholder="请输入旧密码" value="" class="layui-input">
                </div>
            </div>

            <div class="layui-form-item">
                <label class="layui-form-label required">新密码</label>
                <div class="layui-input-block">
                    <input type="password" name="new_password" id="new_password" lay-verify="required|pass" lay-reqtext="新密码不能为空"
                           placeholder="请输入新密码" value="" class="layui-input">
                    <tip>
                        注:新密码需包含大写字母、小写字母、特殊符号(@、$、!、%、*、?、&)，且密码长度不能少于8位，例如：Zhangsan@123456
                    </tip>
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label required">确认密码</label>
                <div class="layui-input-block">
                    <input type="password" name="again_password" id="again_password" lay-verify="required|pass" lay-reqtext="新密码不能为空"
                           placeholder="请输入新的密码" value="" class="layui-input">
                </div>
            </div>

            <div class="layui-form-item">
                <div class="layui-input-block">
                    <button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
                </div>
            </div>
        </div>
    </div>
</div>
<script th:src="@{/lib/jquery-3.4.1/jquery-3.4.1.min.js}" charset="utf-8"></script>
<script th:src="@{/lib/layui/layui.js}" charset="utf-8"></script>
<script th:src="@{/js/lay-config.js}" charset="utf-8"></script>
<script th:src="@{/lib/coco-message/coco-message.js}" charset="utf-8"></script>
<script th:src="@{/lib/md5/md5.min.js}" charset="utf-8"></script>
<script type="text/javascript" th:inline="javascript">
    AjaxUtil.ctx = /*[[@{/}]]*/'';
    layui.use(['form', 'layer', 'miniTab'], function () {
        var form = layui.form,
            layer = layui.layer,
            miniTab = layui.miniTab;

        //监听提交
        form.on('submit(saveBtn)', function (data) {
            let index = layer.alert("是否确定更改密码？", {
                title: '确认提醒'
            }, function () {
                // 关闭对话框
                layer.close(index);
                let new_password = data.field.new_password;
                let again_password = data.field.again_password;
                if (new_password != again_password) {
                    layer.msg('两次输入密码不一致！');
                    return false;
                }
                const regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&]).{8,}$/;

                if (!regex.test(new_password)) {
                    layer.msg('密码强度较弱！保存失败');
                    document.getElementById('new_password').value = '';
                    document.getElementById('again_password').value = '';
                    return false;
                }

                data.field.old_password = md5.MD5(data.field.old_password);
                data.field.new_password = md5.MD5(data.field.new_password);
                data.field.again_password = md5.MD5(data.field.again_password);

                var loading = layer.load(0, {shade: 0.1});
                AjaxUtil.post({
                    url: AjaxUtil.ctx + "home/doUpdatePassword",
                    data: data.field,
                    success: function (msg) {
                        layer.close(loading);
                        if (msg.code === 0) {
                            window.location.href = AjaxUtil.ctx + "home/outLogin";
                            Message.success(1000, msg.message, function () {
                                // 成功的话，则关闭miniTab
                                miniTab.deleteCurrentByIframe();
                            });
                        } else {
                            Message.error(msg.message, 1000);
                        }
                    },
                    error: function (error) {
                    }
                });

            });
            return false;
        });

// 监听新密码输入框的变化
        $('input[name="new_password"]').on('input', function () {
            var password = $(this).val();
            var pattern = new RegExp(/^(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*?&]).{8,}$/);
            var tipText, color;
            if (pattern.test(password)) {
                tipText = '密码强度：强';
                color = '#00BB00'; // 蓝色
            } else if (password.length >= 6 && password.length < 8) {
                tipText = '密码强度：中';
                color = '#4A4AFF'; // 黄色
            } else {
                tipText = '密码强度：弱';
                color = 'red'; // 红色
            }

            // 移除旧的提示信息
            $(this).next('.password-tip').remove();

            // 添加新的提示信息
            $(this).after('<div class="password-tip" style="color: ' + color + ';">' + tipText + '</div>');
        });


        // form.verify({
        //     pass: function(value, item){ //value：表单的值、item：表单的DOM对象
        //         // 密码中必须包含字母（不区分大小写）、数字、特称字符，至少8个字符，最多30个字符；
        //         var pwdRegex = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,30}');
        //         if(!pwdRegex.test(value)){
        //             return '新密码复杂度过低（密码中必须包含字母、数字、特殊字符）';
        //         }
        //     },
        // });

    });
</script>
</body>
</html>