# -*- coding: utf-8 -*-
import json
from flask import Blueprint, render_template, request, jsonify, make_response, current_app, redirect, url_for, g
from application import db, app
from common.libs.UserSerivice import UserService
from common.libs.render_helper import ops_render
from web.models.user import User
route_user = Blueprint('user_page', __name__)
@route_user.route("/login", methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template("user/login.html")
else:
# 设置resp对象来定义返回的值
resp = {"code": 200, "msg": "登录成功", "data": {}}
req = request.values
login_name = req["login_name"] if "login_name" in req else ""
login_pwd = req["login_pwd"] if "login_pwd" in req else ""
if (not login_name) or len(login_name) < 1:
resp["code"] = -1
resp["msg"] = "请输入正确的登录用户名"
return jsonify(resp)
if (not login_pwd) or len(login_pwd) < 1:
resp["code"] = -1
resp["msg"] = "请输入正确的密码"
return jsonify(resp)
# 使用模型验证用户名和密码
user_info = User.query.filter_by(login_name=login_name).first()
if not user_info: # 数据库查不到
resp["code"] = -1
resp["msg"] = "请输入正确的用户名或密码"
return jsonify(resp)
# 密码加盐值
salt = user_info.login_salt
gen_pwd2 = UserService.gen_pwd(login_pwd, salt) # 跟注册时相同的加密机制
# print('md5加密加盐的16进制值(32位16进制):', gen_pwd2)
if user_info.login_pwd != gen_pwd2:
resp["code"] = -1
resp["msg"] = "请输入正确的用户名或密码"
return jsonify(resp)
# 登录成功
resp['data']['username'] = login_name
resp['data']['password'] = login_pwd
resp['data']['salt'] = salt
# 因为jsonify无法携带cookie,所以构造response对象把字典转换成json字符串
# return jsonify(resp)
response = make_response(json.dumps(resp))
# 携带cookie,加密cookie
cokie_str = UserService.genAuthCode(user_info) + "#" + str(user_info.uid)
# current_app.config.get()获取到cookie的字段和值
# set_cookie函数是由服务器发送一个HTTP-cookie到浏览器
response.set_cookie(current_app.config.get("AUTH_COOKIE_NAME"), cokie_str)
return response
# 登出操作
@route_user.route("/logout")
def logout():
response = redirect(url_for('user_page.login'))
response.delete_cookie(current_app.config['AUTH_COOKIE_NAME'])
return response
@route_user.route("/edit", methods=['GET', 'POST'])
def edit():
# return render_template("user/edit.html")
if request.method == 'GET':
'''get请求时渲染页面'''
return ops_render('user/edit.html')
if request.method == 'POST':
'''修改姓名和邮箱时发送post请求,修改数据库记录'''
resp = {"code": 200, "msg": "操作成功", "data": {}}
req = request.values
nickname = req["nickname"] if "nickname" in req else ""
email = req["email"] if "email" in req else ""
# 验证输入合法逻辑
if (not nickname) or len(nickname) < 1:
resp["code"] = -1
resp["msg"] = "请输入符合规范的姓名"
return jsonify(resp)
if (not email) or len(email) < 1:
resp["code"] = -1
resp["msg"] = "请输入符合规范的邮箱"
return jsonify(resp)
# 把更改后的当前用户信息更新到数据库中
user_info = g.current_user
user_info.nickname = nickname
user_info.email = email
db.session.add(user_info)
db.session.commit() # 事务提交
return jsonify(resp)
@route_user.route("/reset-pwd", methods=['GET', 'POST'])
def resetPwd():
# return render_template("user/reset_pwd.html")
if request.method == 'GET':
'''get请求时渲染页面'''
return ops_render('user/reset_pwd.html')
if request.method == 'POST':
resp = {"code": 200, "msg": "修改密码成功", "data": {}}
# 获取请求参数
req = request.values
old_password = req["old_password"] if "old_password" in req else ""
new_password = req["new_password"] if "new_password" in req else ""
# 验证输入合法逻辑
if (not old_password) or len(old_password) < 1:
resp["code"] = -1
resp["msg"] = "请输入正确的原密码"
return jsonify(resp)
if (not new_password) or len(new_password) < 6:
resp["code"] = -1
resp["msg"] = "请输入不少于6位的新密码"
return jsonify(resp)
if old_password == new_password:
resp["code"] = -1
resp["msg"] = "新旧密码一致"
return jsonify(resp)
# 验证旧密码是否和登录时候的用户密码一致
user_info = g.current_user
salt = user_info.login_salt
gen_pwd = UserService.gen_pwd(old_password, salt) # 跟注册时相同的加密机制
if user_info.login_pwd != gen_pwd:
resp["code"] = -1
resp["msg"] = "原密码不对~"
return jsonify(resp)
# 更新新的密码到数据库
user_info.login_pwd = UserService.gen_pwd(new_password, salt)
# 提交事务到数据库
db.session.add(user_info)
db.session.commit()
# 更新cookie,否则页面信息验证失败无法跳转到其他页面
# 3.生成新的cookie
response = make_response(json.dumps(resp))
# 携带cookie
cokie_str = UserService.genAuthCode(user_info) + "#" + str(user_info.uid)
response.set_cookie(app.config.get("AUTH_COOKIE_NAME"), cokie_str, max_age=7 * 24 * 60 * 60)
return response
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
该系统是一款基于Flask框架和前后端分离架构的微信小程序订餐系统后台管理源码,总计包含434个文件,涵盖111个JavaScript文件、96个PNG图像文件、48个Python文件、48个GIF动画文件、45个HTML文件、31个CSS样式文件、17个Python编译文件、6个JPG图片文件、5个SWF动画文件、5个PHP文件。该项目旨在为用户提供一个高效、便捷的订餐管理系统后台。
资源推荐
资源详情
资源评论
收起资源包目录
基于Flask框架和前后端分离的微信小程序订餐系统后台管理系统设计源码 (438个子文件)
style.css 155KB
bootstrap.min.css 118KB
bootstrap.min.css 118KB
ueditor.css 43KB
scrollbar.min.css 42KB
ueditor.min.css 34KB
font-awesome.css 28KB
font-awesome.min.css 23KB
video-js.css 21KB
image.css 18KB
jquery.datetimepicker.min.css 16KB
select2.min.css 16KB
video.css 15KB
layer.css 14KB
attachment.css 14KB
video-js.min.css 11KB
shCoreDefault.css 7KB
layer.css 5KB
scrawl.css 4KB
codemirror.css 3KB
charts.css 3KB
background.css 2KB
emotion.css 2KB
dialogbase.css 2KB
music.css 2KB
edittable.css 1KB
template.css 1KB
jquery.tagsinput.min.css 770B
webuploader.css 515B
help.css 389B
iframe.css 41B
fontawesome-webfont.eot 59KB
vjs.eot 3KB
UEditorSnapscreen.exe 508KB
wface.gif 49KB
jxface2.gif 40KB
yface.gif 28KB
bface.gif 27KB
icons.gif 20KB
file-icons.gif 20KB
file-icons.gif 20KB
tface.gif 19KB
fface.gif 18KB
cface.gif 8KB
loading-0.gif 6KB
icons-all.gif 4KB
loading-2.gif 2KB
videologo.gif 2KB
cancelbutton.gif 1KB
button-bg.gif 1KB
lock.gif 1KB
alignicon.gif 1KB
word.gif 1019B
icon_doc.gif 1012B
icon_psd.gif 1009B
icon_rar.gif 1007B
icon_xls.gif 1005B
icon_ppt.gif 1001B
icon_mv.gif 1001B
icon_pdf.gif 996B
icon_mp3.gif 986B
icon_txt.gif 970B
icon_jpg.gif 950B
icon_exe.gif 949B
icon_chm.gif 923B
loading.gif 734B
loading-1.gif 701B
icons.gif 453B
icons.gif 453B
icons.gif 453B
success.gif 445B
success.gif 445B
success.gif 445B
cursor_v.gif 370B
cursor_h.gif 253B
anchor.gif 184B
highlighted.gif 111B
unhighlighted.gif 111B
bg.gif 84B
pagebreak.gif 54B
spacer.gif 43B
0.gif 43B
.gitignore 182B
info.html 7KB
index.html 6KB
wordimage.html 6KB
map.html 6KB
layout_main.html 6KB
emotion.html 6KB
image.html 5KB
index.html 5KB
index.html 5KB
show.html 5KB
charts.html 5KB
link.html 4KB
insertframe.html 4KB
video.html 4KB
searchreplace.html 4KB
info.html 4KB
gmap.html 4KB
共 438 条
- 1
- 2
- 3
- 4
- 5
资源评论
lsx202406
- 粉丝: 1833
- 资源: 3858
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功