refactor(all): 完成项目的前后端逻辑分离,静态页面可以单独部署
This commit is contained in:
+10
-13
@@ -1,16 +1,12 @@
|
||||
from collections import OrderedDict
|
||||
from copy import deepcopy
|
||||
|
||||
from flask import Blueprint, make_response, redirect, request
|
||||
from flask import Blueprint, make_response, request
|
||||
from flask_jwt_extended import (
|
||||
create_access_token,
|
||||
create_refresh_token,
|
||||
get_current_user,
|
||||
jwt_required,
|
||||
set_access_cookies,
|
||||
set_refresh_cookies,
|
||||
unset_access_cookies,
|
||||
unset_refresh_cookies,
|
||||
)
|
||||
|
||||
from pear_admin.extensions import db
|
||||
@@ -35,10 +31,14 @@ def login_in():
|
||||
access_token = create_access_token(user)
|
||||
refresh_token = create_refresh_token(user)
|
||||
|
||||
response = make_response({"code": 0, "message": "登录成功"})
|
||||
|
||||
set_access_cookies(response, access_token)
|
||||
set_refresh_cookies(response, refresh_token)
|
||||
response = make_response(
|
||||
{
|
||||
"code": 0,
|
||||
"message": "登录成功",
|
||||
"access_token": access_token,
|
||||
"refresh_token": refresh_token,
|
||||
}
|
||||
)
|
||||
|
||||
return response
|
||||
|
||||
@@ -46,10 +46,7 @@ def login_in():
|
||||
@passport_api.route("/logout", methods=["GET", "POST"])
|
||||
@jwt_required()
|
||||
def logout():
|
||||
response = make_response(redirect("/login"))
|
||||
unset_access_cookies(response)
|
||||
unset_refresh_cookies(response)
|
||||
return response
|
||||
return {"msg": "退出登录成功", "code": 0}
|
||||
|
||||
|
||||
@passport_api.get("/menu")
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
from copy import deepcopy
|
||||
|
||||
from flask import Blueprint, request
|
||||
from flask_sqlalchemy.pagination import Pagination
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
from datetime import datetime
|
||||
|
||||
from flask import Blueprint, request
|
||||
from flask_jwt_extended import current_user, jwt_required
|
||||
from flask_sqlalchemy.pagination import Pagination
|
||||
|
||||
from pear_admin.extensions import db
|
||||
@@ -89,3 +90,13 @@ def change_user_role(rid):
|
||||
user.role_list = [r[0] for r in role_obj_list]
|
||||
user.save()
|
||||
return {"code": 0, "message": "授权成功"}
|
||||
|
||||
|
||||
@user_api.get("/user/profile")
|
||||
@jwt_required()
|
||||
def user_profile():
|
||||
return {
|
||||
"code": 0,
|
||||
"msg": "获取个人数据成功",
|
||||
"data": current_user.json(),
|
||||
}
|
||||
|
||||
@@ -19,9 +19,9 @@ def user_lookup_callback(_jwt_header, jwt_data):
|
||||
|
||||
@jwt.expired_token_loader
|
||||
def expired_token_callback():
|
||||
return redirect("/login")
|
||||
return {"msg": "token 已过期,请重新登录", "code": -1}, 403
|
||||
|
||||
|
||||
@jwt.unauthorized_loader
|
||||
def missing_token_callback(error):
|
||||
return redirect("/login")
|
||||
return {"msg": "操作未授权,请重新登录", "code": -1}, 403
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
from flask import Flask
|
||||
|
||||
from .index import index_bp
|
||||
from .views import views_bp
|
||||
from .system import system_bp
|
||||
|
||||
|
||||
def register_views(app: Flask):
|
||||
app.register_blueprint(index_bp)
|
||||
app.register_blueprint(views_bp)
|
||||
app.register_blueprint(system_bp)
|
||||
|
||||
@@ -1,24 +1,21 @@
|
||||
from flask import Blueprint, render_template, send_from_directory
|
||||
from flask_jwt_extended import jwt_required
|
||||
from flask import Blueprint, render_template, send_file, send_from_directory
|
||||
|
||||
index_bp = Blueprint("index", __name__)
|
||||
|
||||
|
||||
@index_bp.route("/")
|
||||
@jwt_required()
|
||||
def index():
|
||||
return render_template("index.html")
|
||||
return render_template("view/index.html")
|
||||
|
||||
|
||||
@index_bp.route("/login.html")
|
||||
@index_bp.route("/login")
|
||||
@index_bp.route("/view/login.html")
|
||||
def login():
|
||||
return render_template("login.html")
|
||||
return render_template("view/login.html")
|
||||
|
||||
|
||||
@index_bp.route("/register.html")
|
||||
@index_bp.route("/view/register.html")
|
||||
def register():
|
||||
return render_template("register.html")
|
||||
return render_template("view/register.html")
|
||||
|
||||
|
||||
@index_bp.route("/view/console/index.html")
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
from flask import Blueprint, render_template
|
||||
|
||||
system_bp = Blueprint("system", __name__)
|
||||
|
||||
|
||||
@system_bp.get("/system/<path1>/<path2>")
|
||||
def system_view(path1, path2):
|
||||
return render_template(f"system/{path1}/{path2}")
|
||||
|
||||
|
||||
@system_bp.get("/views/role.html")
|
||||
def role_view():
|
||||
return render_template("system/role/index.html")
|
||||
|
||||
|
||||
@system_bp.get("/views/department.html")
|
||||
def department_view():
|
||||
return render_template("system/department/index.html")
|
||||
|
||||
|
||||
@system_bp.get("/views/user.html")
|
||||
def user_view():
|
||||
return render_template("system/user/index.html")
|
||||
@@ -1,33 +0,0 @@
|
||||
from flask import Blueprint, render_template
|
||||
|
||||
views_bp = Blueprint("views", __name__)
|
||||
|
||||
|
||||
@views_bp.get("/views/rights")
|
||||
def rights_view():
|
||||
return render_template("views/rights/index.html")
|
||||
|
||||
|
||||
@views_bp.get("/views/role")
|
||||
def role_view():
|
||||
return render_template("views/role/index.html")
|
||||
|
||||
|
||||
@views_bp.get("/views/role_rights/<int:rid>")
|
||||
def role_rights_view(rid):
|
||||
return render_template("views/role/role_rights.html", rid=rid)
|
||||
|
||||
|
||||
@views_bp.get("/views/user_role/<int:rid>")
|
||||
def user_role_view(rid):
|
||||
return render_template("views/user/user_role.html", rid=rid)
|
||||
|
||||
|
||||
@views_bp.get("/views/department")
|
||||
def department_view():
|
||||
return render_template("views/department/index.html")
|
||||
|
||||
|
||||
@views_bp.get("/views/user")
|
||||
def user_view():
|
||||
return render_template("views/user/index.html")
|
||||
Reference in New Issue
Block a user