更新了找回密码错误

This commit is contained in:
root 2025-08-19 18:18:41 +08:00
parent c4e2b3e741
commit f754072e08

View File

@ -435,23 +435,74 @@ class AppServer:
@self.app.route('/api/auth/forgot-password', methods=['POST'])
def forgot_password():
"""忘记密码"""
"""忘记密码 - 根据用户名和手机号找回密码"""
try:
data = flask_request.get_json()
username = data.get('username')
phone = data.get('phone')
if not username:
return jsonify({'success': False, 'error': '用户名不能为空'}), 400
return jsonify({
'success': False,
'error': '请输入用户名'
}), 400
if not phone:
return jsonify({
'success': False,
'error': '请输入手机号码'
}), 400
# 这里应该发送重置密码邮件,简化处理
return jsonify({
'success': True,
'message': '密码重置邮件已发送,请查收邮箱'
})
# 验证手机号格式
import re
phone_pattern = r'^1[3-9]\d{9}$'
if not re.match(phone_pattern, phone):
return jsonify({
'success': False,
'error': '手机号格式不正确'
}), 400
# 查询用户信息
conn = self.db_manager.get_connection()
cursor = conn.cursor()
cursor.execute('''
SELECT username, password, phone FROM users
WHERE username = ? AND phone = ?
''', (username, phone))
user = cursor.fetchone()
if user:
# 用户存在且手机号匹配,返回数据库中存储的实际密码
actual_password = user['password']
self.logger.info(f'用户 {username} 密码查询成功')
return jsonify({
'success': True,
'password': actual_password, # 返回数据库中存储的实际密码
'message': '密码找回成功'
})
else:
# 检查用户是否存在
cursor.execute('SELECT username FROM users WHERE username = ?', (username,))
user_exists = cursor.fetchone()
if not user_exists:
return jsonify({
'success': False,
'error': '用户不存在'
}), 400
else:
return jsonify({
'success': False,
'error': '手机号不匹配'
}), 400
except Exception as e:
self.logger.error(f'忘记密码处理失败: {e}')
return jsonify({'success': False, 'error': str(e)}), 500
return jsonify({'success': False, 'error': '处理失败'}), 500
# ==================== 用户管理API ====================
@ -732,22 +783,41 @@ class AppServer:
result = self.config_manager.set_all_device_configs(data)
# 如果配置设置成功,重启设备数据推送
# 如果配置设置成功,异步重启设备数据推送
if result['success']:
try:
self.logger.info("设备配置更新成功,重启设备数据推送...")
# 先停止当前的数据推送
if self.is_pushing_data:
self.stop_device_push_data()
time.sleep(1) # 等待停止完成
# 重新启动设备数据推送
self.start_device_push_data()
result['message'] = result.get('message', '') + ' 设备已重启数据推送。'
self.logger.info("设备配置更新并重启数据推送完成")
except Exception as restart_error:
self.logger.error(f"重启设备数据推送失败: {restart_error}")
result['message'] = result.get('message', '') + f' 但重启设备数据推送失败: {str(restart_error)}'
def restart_devices_async():
"""异步重启设备数据推送"""
try:
self.logger.info("设备配置更新成功,异步重启设备数据推送...")
# 先停止当前的数据推送
if self.is_pushing_data:
self.stop_device_push_data()
time.sleep(1) # 等待停止完成
# 重新启动设备数据推送
self.start_device_push_data()
self.logger.info("设备配置更新并重启数据推送完成")
# 通过SocketIO通知前端重启完成
self.socketio.emit('device_restart_complete', {
'status': 'success',
'message': '设备重启完成'
}, namespace='/devices')
except Exception as restart_error:
self.logger.error(f"重启设备数据推送失败: {restart_error}")
# 通过SocketIO通知前端重启失败
self.socketio.emit('device_restart_complete', {
'status': 'error',
'message': f'设备重启失败: {str(restart_error)}'
}, namespace='/devices')
# 启动异步线程执行重启操作
restart_thread = threading.Thread(target=restart_devices_async)
restart_thread.daemon = True
restart_thread.start()
result['message'] = result.get('message', '') + ' 设备正在后台重启中,请稍候...'
status_code = 200 if result['success'] else 400
return jsonify(result), status_code