仰望星辰工作室

better-staridc-MNBT

Z zfhsh first commit 2 天前
1<?php
2/** Docker 登录页(独立布局,无侧栏) */
3?>
4<!DOCTYPE html>
5<html lang="zh-CN">
6<head>
7<meta charset="utf-8">
8<meta name="viewport" content="width=device-width, initial-scale=1">
9<title><?= htmlspecialchars($title ?? 'Docker 控制台登录') ?></title>
10<link rel="icon" href="<?= mnbt_asset_url('images/logo-ico.png') ?>" type="image/ico">
11<link href="<?= mnbt_theme_asset('assets/docker.css', 'docker') ?>" rel="stylesheet">
12<script src="<?= mnbt_asset_url('js/jquery.min.js') ?>"></script>
13<script>window.MNBT_CSRF = <?= json_encode(mnbt_csrf_token()) ?>;</script>
14</head>
15<body class="dk-body">
16<div class="dk-login-wrap">
17 <div class="dk-login-card">
18 <div class="dk-brand">
19 <img src="<?= mnbt_theme_asset('assets/docker.svg', 'docker') ?>" alt="Docker 控制台" class="dk-login-logo">
20 <p class="dk-sub">登录以管理您的容器服务</p>
21 </div>
22 <form id="dkLoginForm" autocomplete="off">
23 <div class="dk-field">
24 <label>账号</label>
25 <input class="dk-input" type="text" name="username" required placeholder="请输入 Docker 账号">
26 </div>
27 <div class="dk-field">
28 <label>密码</label>
29 <input class="dk-input" type="password" name="password" required placeholder="请输入密码">
30 </div>
31 <button type="submit" class="dk-btn dk-btn-block" id="dkLoginBtn">登 录</button>
32 </form>
33 </div>
34</div>
35<div class="dk-toast-wrap" id="dkToastWrap"></div>
36<script>
37function dkToast(msg, type){
38 type = type || 'info';
39 var wrap = document.getElementById('dkToastWrap');
40 var el = document.createElement('div');
41 el.className = 'dk-toast ' + type; el.textContent = msg;
42 wrap.appendChild(el);
43 setTimeout(function(){ el.style.transition='opacity .3s'; el.style.opacity='0'; setTimeout(function(){ el.remove(); }, 300); }, 2600);
44}
45$('#dkLoginForm').on('submit', function(e){
46 e.preventDefault();
47 var btn = $('#dkLoginBtn');
48 btn.prop('disabled', true).html('<span class="dk-spin"></span> 登录中...');
49 var fd = new FormData(this);
50 fd.append('_csrf', window.MNBT_CSRF);
51 $.ajax({ url: 'ajax.php?gn=login', type: 'POST', data: fd, processData: false, contentType: false, dataType: 'json' })
52 .then(function(r){
53 if (r.success) { dkToast('登录成功', 'success'); setTimeout(function(){ window.location.href = 'console.php'; }, 500); }
54 else { dkToast(r.msg || '登录失败', 'error'); btn.prop('disabled', false).text('登 录'); }
55 }, function(){ dkToast('网络错误', 'error'); btn.prop('disabled', false).text('登 录'); });
56});
57</script>
58</body>
59</html>