123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <% include ./sub_menu.ejs %>
- <div class="panel-content" id="app">
- <div class="panel-title">
- <div class="title-main">
- <h2>账号安全</h2>
- </div>
- </div>
- <div class="content-wrap">
- <div class="c-body">
- <div class="sjs-height-0">
- <div class="row m-0">
- <div class="col-6 my-3">
- <!--账号安全-->
- <form action="/profile/password" method="post" id="password-form">
- <% if(accountData.password !== 'SSO password') { %>
- <input-text label="旧密码" password="true" name="password"></input-text>
- <input-text label="新密码" password="true" name="new_password" id="new_password"></input-text>
- <input-text label="确认新密码" password="true" name="confirm_password"></input-text>
- <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>">
- <button type="submit" class="btn btn-primary btn-sm" id="modify-password">修改密码</button>
- <% } else { %>
- <p>SSO用户请到<a href="#">此处</a>修改密码</p>
- <% } %>
- </form>
- <!-- 访问日志 -->
- <div class="col-12 mt-5">
- <h4>访问日志</h4>
- <table class="table table-hover">
- <thead>
- <tr>
- <th></th>
- <th>系统</th>
- <th>浏览器</th>
- <th>登录时间</th>
- <th>登录地址</th>
- </tr>
- </thead>
- <tbody>
- <% loginLogging.forEach((item, idx) => { %>
- <tr>
- <td><%- idx + 1 %></td>
- <td><%- item.os %></td>
- <td><%- item.browser %></td>
- <td><%- ctx.helper.formatFullDate(item.create_time) %></td>
- <td><%- item.address %></td>
- </tr>
- <% }) %>
- </tbody>
- </table>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <script>
- $(document).ready(function() {
- $.validator.addMethod("isSafe", function(value, element) {
- const safe = /^(?![0-9]+$)(?![a-zA-Z]+$).{6,16}$/;
- // var safe = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>,.\/]).{6,16}$/;
- // var safe = /^(?=.*[a-zA-Z])(?=.*\d).{6,16}$/;
- return this.optional(element) || safe.test(value);
- }, "请设置至少包含数字和字母的密码");
- const options = {
- rules: '',
- messages: {},
- errorPlacement: function(error, element) {
- $(element).addClass('is-invalid');
- $(element).after(error);
- },
- errorClass: "invalid-feedback",
- errorElement: "div",
- highlight: false,
- success: function(element) {
- $(element).siblings('input').removeClass('is-invalid');
- $(element).remove();
- },
- };
- options.rules = {
- password: {
- required: true,
- minlength: 6,
- },
- new_password: {
- required: true,
- minlength: 6,
- maxlength: 16,
- isSafe: true,
- },
- confirm_password : {
- required: true,
- minlength: 6,
- maxlength: 16,
- equalTo: '#new_password',
- },
- };
- $("#password-form").validate(options);
- });
- </script>
- <script src="/public/js/validate.extend.js"></script>
- <script type="text/javascript">
- new Vue({
- el: '#app',
- });
- const csrf = '<%= ctx.csrf %>';
- </script>
- <script type="text/javascript" src="/public/js/profile.js"></script>
|