Complete project files including setup.sh
This commit is contained in:
85
templates/admin/users.html
Normal file
85
templates/admin/users.html
Normal file
@@ -0,0 +1,85 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}用户审核 - 管理面板{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container admin-container">
|
||||
<div class="page-header">
|
||||
<h1>👥 用户审核</h1>
|
||||
<a href="{{ url_for('admin.dashboard') }}" class="btn btn-secondary">返回面板</a>
|
||||
</div>
|
||||
|
||||
<!-- Pending Users -->
|
||||
<section class="admin-section">
|
||||
<h2 class="section-title">待审核用户 ({{ pending_users|length }})</h2>
|
||||
|
||||
{% if pending_users %}
|
||||
<div class="admin-list">
|
||||
{% for user in pending_users %}
|
||||
<div class="admin-item">
|
||||
<div class="admin-item-header">
|
||||
<div class="user-info">
|
||||
<div class="user-avatar">{{ user.username[0].upper() }}</div>
|
||||
<div>
|
||||
<div class="username">{{ user.username }}</div>
|
||||
<div class="user-email">{{ user.email }}</div>
|
||||
<div class="user-time">注册于 {{ user.created_at.strftime('%Y-%m-%d %H:%M') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Student ID Photo -->
|
||||
<div class="student-id-preview">
|
||||
<p><strong>学生证照片:</strong></p>
|
||||
<img src="{{ url_for('uploaded_file', filename=user.student_id_photo) }}" alt="Student ID"
|
||||
class="student-id-image">
|
||||
</div>
|
||||
|
||||
<!-- Actions -->
|
||||
<div class="admin-actions">
|
||||
<form method="POST" action="{{ url_for('admin.approve_user', user_id=user.id) }}"
|
||||
style="display: inline;">
|
||||
<button type="submit" class="btn btn-success">✓ 批准</button>
|
||||
</form>
|
||||
<form method="POST" action="{{ url_for('admin.reject_user', user_id=user.id) }}"
|
||||
style="display: inline;" onsubmit="return confirm('确定要拒绝该用户的注册吗?');">
|
||||
<button type="submit" class="btn btn-danger">✗ 拒绝</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="empty-state">
|
||||
<p>暂无待审核用户</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
</section>
|
||||
|
||||
<!-- Recently Approved Users -->
|
||||
<section class="admin-section">
|
||||
<h2 class="section-title">最近批准的用户</h2>
|
||||
|
||||
{% if approved_users %}
|
||||
<div class="users-list">
|
||||
{% for user in approved_users %}
|
||||
<div class="user-list-item">
|
||||
<div class="user-avatar">{{ user.username[0].upper() }}</div>
|
||||
<div class="user-list-info">
|
||||
<a href="{{ url_for('users.profile', username=user.username) }}" class="username">
|
||||
{{ user.username }}
|
||||
</a>
|
||||
<p class="user-stats">{{ user.email }} · 加入于 {{ user.created_at.strftime('%Y-%m-%d') }}</p>
|
||||
</div>
|
||||
<span class="badge badge-success">已批准</span>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="empty-state">
|
||||
<p>暂无已批准用户</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
</section>
|
||||
</div>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user