Files
pear-admin-flask/applications/view/users/profile.py
T
2021-07-02 04:39:57 +08:00

87 lines
2.8 KiB
Python

# 个人中心
from flask import render_template, request, make_response, jsonify
from flask_login import login_required, current_user
from flask_restful import Resource, reqparse
from sqlalchemy import desc
from applications.common.utils.http import fail_api, success_api
from applications.extensions import db
from applications.models import User, AdminLog
from applications.view.users import users_bp, user_api
@users_bp.get('/center')
@login_required
def center():
user_info = current_user
user_logs = AdminLog.query.filter_by(url='/passport/login').filter_by(uid=current_user.id).order_by(
desc(AdminLog.create_time)).limit(10)
return render_template('admin/user/profile.html', user_info=user_info, user_logs=user_logs)
@user_api.resource('/avatar')
class Avatar(Resource):
"""修改头像"""
def get(self):
return make_response(render_template('admin/user/avatar.html'))
def put(self):
url = request.json.get("avatar").get("src")
ret = User.query.filter_by(id=current_user.id).update({"avatar": url})
db.session.commit()
if not ret:
return fail_api(msg="出错啦")
return success_api(msg="修改成功")
# 修改当前用户信息
@users_bp.put('/updateInfo')
@login_required
def update_info():
parser = reqparse.RequestParser()
parser.add_argument('realname', type=str, dest='real_name')
parser.add_argument('remark', type=str)
parser.add_argument('details', type=str)
res = parser.parse_args()
ret = User.query.filter_by(
id=current_user.id).update({"realname": res.real_name,
"remark": res.details})
if not ret:
return fail_api(msg="出错啦")
return success_api(msg="更新成功")
@user_api.resource('/editPassword')
class EditPassword(Resource):
"""前用户密码"""
@login_required
def get(self):
return make_response(render_template('admin/user/edit_password.html'))
@login_required
def put(self):
parser = reqparse.RequestParser()
parser.add_argument('oldPassword', type=str, required=True, help='旧密码不得为空')
parser.add_argument('newPassword', type=str, required=True, help='新密码不得为空')
parser.add_argument('confirmPassword', type=str, required=True, help='确认密码不能为空')
res = parser.parse_args()
if res.newPassword != res.confirmPassword:
return fail_api(msg='确认密码不一致')
""" 修改当前用户密码 """
is_right = current_user.validate_password(res.oldPassword)
if not is_right:
return jsonify(success=False, msg="旧密码错误")
current_user.set_password(res.newPassword)
db.session.add(current_user)
db.session.commit()
return jsonify(success=True, msg="更改成功")