Compare commits

..

4 Commits

Author SHA1 Message Date
wangsiyuan 08790e3e9e 更新 database_manager.py 2023-12-25 21:43:36 +08:00
wangsiyuan 6026eac50e 更新 views.py 2023-12-25 21:43:34 +08:00
wangsiyuan 29bce0557e 创建 profile.html 2023-12-25 21:43:31 +08:00
wangsiyuan e3ac6e7839 更新 home.html 2023-12-25 21:43:29 +08:00
4 changed files with 117 additions and 5 deletions

View File

@ -21,10 +21,10 @@
src="//unpkg.com/outeres@0.0.10/img/layui/icon-v2.png"
class="layui-nav-img"
/>
管理员
{{ session.nickname }}
</a>
<dl class="layui-nav-child">
<dd><a href="javascript:;">资料</a></dd>
<dd><a href="/home/profile">资料</a></dd> <!-- 修改这里的href指向/profile -->
<dd><a href="javascript:;" id="logoutLink">登出</a></dd>
</dl>
</li>
@ -47,7 +47,7 @@
<script src="static/jquery.min.js"></script> <!-- 确保已经引入jQuery -->
<script src="static/layui.js"></script>
<script>
// 请求后端获取菜单数据
// 请求后端获取菜单数据
$.get('/api/menu', function (menuItems) {
// 清空原有菜单项
var menuList = $('.layui-nav.layui-nav-tree');

View File

@ -0,0 +1,94 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>资料</title>
<meta name="renderer" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="static/css/layui.css" rel="stylesheet"/>
</head>
<body>
<div class="layui-layout layui-layout-admin">
<div class="layui-header">
<div class="layui-logo layui-hide-xs layui-bg-black">网上上课点名系统</div>
<!-- 头部区域可配合layui 已有的水平导航) -->
</div>
<div class="layui-body">
<!-- 内容主体区域 -->
<div style="padding: 15px">
<blockquote class="layui-elem-quote layui-text">
更换头像和昵称
</blockquote>
<!-- 更换头像和昵称的表单 -->
<form id="profileForm" method="post" enctype="multipart/form-data">
<div class="layui-form-item">
<label class="layui-form-label">头像:</label>
<div class="layui-input-block">
<input type="file" name="avatar"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">昵称:</label>
<div class="layui-input-block">
<input type="text" name="nickname" required lay-verify="required"
placeholder="请输入新的昵称"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" type="submit">更新</button>
</div>
</div>
</form>
</div>
</div>
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
<!-- 动态加载菜单栏 -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
</ul>
</div>
</div>
</div>
<script src="static/jquery.min.js"></script> <!-- 确保已经引入jQuery -->
<script src="static/layui.js"></script>
<script>
// 请求后端获取菜单数据
$.get('/api/menu', function (menuItems) {
// 清空原有菜单项
var menuList = $('.layui-nav.layui-nav-tree');
menuList.empty();
// 动态添加菜单项
menuItems.forEach(function (item) {
menuList.append('<li class="layui-nav-item"><a href="' + item.link + '">' + item.name + '</a></li>');
});
// 更新菜单布局
layui.element.render('nav', 'test');
});
layui.use(['jquery'], function () {
var $ = layui.jquery; // 获取Layui的jQuery对象
$('#logoutLink').on('click', function () {
// 向后端发送登出请求
$.get('/logout', function (data) {
// 重定向到登录页面,或根据后端响应做其他处理
window.location.href = '/login';
});
});
});
</script>
</body>
</html>

View File

@ -58,6 +58,7 @@ def login():
# 登录成功
session['username'] = phone_number
session['role'] = result['identity'] # 设置用户角色
session['nickname'] = result['nickname']
return jsonify(success=True, message="登录成功")
elif not result['status']:
# 用户被禁用的情况
@ -106,6 +107,22 @@ def get_menu():
return jsonify([]), 401 # 未授权状态码
@app.route('/home/profile', methods=['GET', 'POST'])
def profile():
if request.method == 'POST':
# 从表单获取数据
nickname = request.form['nickname']
avatar = request.files['avatar']
# 处理头像和昵称更新逻辑
# ...
return "资料更新成功" # 或者重定向到其他页面
# 如果是GET请求显示表单页面
return render_template('profile.html') # 确保这里渲染的是包含上面表单的HTML页面
if __name__ == '__main__':

View File

@ -46,17 +46,18 @@ class DatabaseManager:
def valid_login(self, phone_number, password_attempt):
# SQL查询获取用户的哈希密码身份和状态
sql = "SELECT password, identity, status FROM user WHERE phone_number=%s LIMIT 1"
sql = "SELECT password, identity, status,nickname FROM user WHERE phone_number=%s LIMIT 1"
result = self.fetch(sql, (phone_number,))
if result:
stored_hash = result[0]['password'] # 假设结果是密码字段
identity = result[0]['identity'] # 用户身份
status = result[0]['status'] # 用户状态
nickname = result[0]['nickname']
# 使用bcrypt进行密码验证
if bcrypt.checkpw(password_attempt.encode('utf-8'), stored_hash.encode('utf-8')):
# 密码匹配,返回登录成功,身份和状态
return {'valid': True, 'identity': identity, 'status': status}
return {'valid': True, 'identity': identity, 'status': status,'nickname': nickname}
# 密码不匹配或用户不存在,返回登录失败
return {'valid': False}