新增客户端管理功能,包括创建、编辑和删除客户端的API,更新用户管理功能,添加用户创建和编辑页面,优化管理员功能,增强用户和客户端的管理体验。

This commit is contained in:
2025-04-17 02:29:16 +08:00
parent d06e45e5d4
commit ff47bb2f6f
11 changed files with 823 additions and 77 deletions

View File

@@ -1,38 +1,110 @@
{{template "header" .}}
<div class="container mt-4">
<h2>用户管理</h2>
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>用户名</th>
<th>邮箱</th>
<th>创建时间</th>
</tr>
</thead>
<tbody>
{{range .users}}
<tr>
<td>{{.ID}}</td>
<td>{{.Username}}</td>
<td>{{.Email}}</td>
<td>{{.CreatedAt.Format "2006-01-02 15:04:05"}}</td>
</tr>
{{end}}
</tbody>
</table>
<nav>
<ul class="pagination">
{{if gt .page 1}}
<li class="page-item">
<a class="page-link" href="?page={{subtract .page 1}}&page_size={{.pageSize}}">上一页</a>
</li>
{{end}}
<li class="page-item">
<a class="page-link" href="?page={{add .page 1}}&page_size={{.pageSize}}">下一页</a>
</li>
</ul>
<!DOCTYPE html>
<html>
<head>
<title>用户管理 - OIDC OAuth2 管理系统</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css">
</head>
<body>
<!-- 导航栏 -->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark mb-4">
<div class="container">
<a class="navbar-brand" href="/">OIDC OAuth2 管理系统</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link {{if eq .active "users"}}active{{end}}" href="/admin/users">用户管理</a>
</li>
<li class="nav-item">
<a class="nav-link {{if eq .active "clients"}}active{{end}}" href="/admin/clients">客户端管理</a>
</li>
</ul>
</div>
</div>
</nav>
</div>
{{template "footer" .}}
<div class="container mt-5">
<div class="d-flex justify-content-between align-items-center mb-4">
<h2>用户管理</h2>
<a href="/admin/users/create" class="btn btn-primary">创建新用户</a>
</div>
{{if .error}}
<div class="alert alert-danger">{{.error}}</div>
{{end}}
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>用户名</th>
<th>邮箱</th>
<th>状态</th>
<th>创建时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{{range .users}}
<tr>
<td>{{.ID}}</td>
<td>{{.Username}}</td>
<td>{{.Email}}</td>
<td>
{{if .IsActive}}
<span class="badge bg-success">激活</span>
{{else}}
<span class="badge bg-danger">禁用</span>
{{end}}
</td>
<td>{{.CreatedAt.Format "2006-01-02 15:04:05"}}</td>
<td>
<a href="/admin/users/{{.ID}}/edit" class="btn btn-sm btn-primary">编辑</a>
<button class="btn btn-sm btn-danger" data-user-id="{{.ID}}" onclick="deleteUser(this.dataset.userId)">删除</button>
</td>
</tr>
{{end}}
</tbody>
</table>
<!-- 分页 -->
<nav>
<ul class="pagination">
{{if gt .page 1}}
<li class="page-item">
<a class="page-link" href="/admin/users?page={{subtract .page 1}}&page_size={{.pageSize}}">上一页</a>
</li>
{{end}}
<li class="page-item active">
<span class="page-link">{{.page}}</span>
</li>
{{if lt (multiply .page .pageSize) .total}}
<li class="page-item">
<a class="page-link" href="/admin/users?page={{add .page 1}}&page_size={{.pageSize}}">下一页</a>
</li>
{{end}}
</ul>
</nav>
</div>
<script>
function deleteUser(id) {
if (confirm('确定要删除这个用户吗?')) {
fetch(`/admin/users/${id}/delete`, {
method: 'POST',
credentials: 'same-origin'
}).then(response => {
if (response.ok) {
window.location.reload();
} else {
alert('删除失败');
}
});
}
}
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>