Files
mce/templates/admin/html/users/index.html
Victor_Jay 39d13993ba fix: 设计原则审查修复 — DIP/ISP, LoD, DRY, OCP, URL, 301缓存
- P0 DIP+ISP: 全链路注入接口,消除零接口紧耦合
- P0 URL: auth 301→302,修复登出后浏览器缓存陷阱
- P1 DRY: JWT 认证逻辑收敛至 TokenService+中间件
- P2 DRY: 前后端角色/状态映射统一为 model 常量
- P2 LoD: 新增 SettingsController,router 不再跨层调 repo
- P2 URL: settings ?tab= → /settings/:tab 伪静态
- P3 OCP: 角色权限 map 化,告别硬编码 switch
2026-05-26 21:12:19 +08:00

61 lines
2.2 KiB
HTML

{{template "admin/layout/base.html" .}}
<div class="page-header">
<h1>用户管理</h1>
<p class="page-desc">搜索、查看和管理本站用户</p>
</div>
<!-- 搜索与筛选 -->
<div class="filter-bar">
<input type="text" id="searchInput" class="filter-input" placeholder="搜索邮箱或用户名..." autocomplete="off">
<select id="roleFilter" class="filter-select">
<option value="">全部角色</option>
{{range $val, $label := .RoleNames}}
<option value="{{$val}}">{{$label}}</option>
{{end}}
</select>
<select id="statusFilter" class="filter-select">
<option value="">全部状态</option>
{{range $val, $label := .StatusNames}}
<option value="{{$val}}">{{$label}}</option>
{{end}}
</select>
<button id="searchBtn" class="btn btn-primary">搜索</button>
</div>
<!-- 用户表格 -->
<div class="table-container">
<table class="data-table">
<thead>
<tr>
<th>UID</th>
<th>用户名</th>
<th>邮箱</th>
<th>角色</th>
<th>状态</th>
<th>注册时间</th>
<th>操作</th>
</tr>
</thead>
<tbody id="userTableBody">
<tr class="table-loading"><td colspan="7">加载中...</td></tr>
</tbody>
</table>
</div>
<!-- 分页 -->
<div class="pagination-bar" id="paginationBar"></div>
<script>
window.__currentUid = {{.UID}};
window.__isOwner = {{if .IsOwner}}true{{else}}false{{end}};
// 由服务端 model.RoleDisplayNames / StatusDisplayNames 作为唯一数据源注入
window.__ROLE_NAMES = {
{{range $val, $label := .RoleNames}}"{{$val}}": "{{$label}}",
{{end}}
};
window.__STATUS_NAMES = {
{{range $val, $label := .StatusNames}}"{{$val}}": "{{$label}}",
{{end}}
};
</script>
{{template "admin/layout/footer.html" .}}