Compare commits
4 Commits
50dc888339
...
08790e3e9e
| Author | SHA1 | Date |
|---|---|---|
|
|
08790e3e9e | |
|
|
6026eac50e | |
|
|
29bce0557e | |
|
|
e3ac6e7839 |
|
|
@ -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');
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
17
app/views.py
17
app/views.py
|
|
@ -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__':
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
Reference in New Issue