From 8765b2c3440bbbf2f24bb28dafdcb28fe9e5b39a Mon Sep 17 00:00:00 2001 From: zhengxinonly Date: Sat, 30 Sep 2023 16:19:07 +0800 Subject: [PATCH] =?UTF-8?q?feature:=20=E5=88=9D=E5=A7=8B=E5=8C=96=20jwt=20?= =?UTF-8?q?=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pear_admin/__init__.py | 2 ++ pear_admin/extensions/__init__.py | 3 +++ pear_admin/extensions/init_jwt.py | 16 ++++++++++++++++ 3 files changed, 21 insertions(+) create mode 100644 pear_admin/extensions/init_jwt.py diff --git a/pear_admin/__init__.py b/pear_admin/__init__.py index aec55ca..6734833 100644 --- a/pear_admin/__init__.py +++ b/pear_admin/__init__.py @@ -1,6 +1,7 @@ from flask import Flask from configs import config +from pear_admin.apis import register_apis from pear_admin.extensions import register_extensions from pear_admin.orms import UserORM from pear_admin.views import register_views @@ -12,6 +13,7 @@ def create_app(config_name="dev"): app.config.from_object(config[config_name]) register_extensions(app) + register_apis(app) register_views(app) diff --git a/pear_admin/extensions/__init__.py b/pear_admin/extensions/__init__.py index a08c0e8..8ec9707 100644 --- a/pear_admin/extensions/__init__.py +++ b/pear_admin/extensions/__init__.py @@ -1,10 +1,13 @@ from flask import Flask from .init_db import db, migrate +from .init_jwt import jwt from .init_script import register_script def register_extensions(app: Flask): db.init_app(app) migrate.init_app(app, db) + jwt.init_app(app) + register_script(app) diff --git a/pear_admin/extensions/init_jwt.py b/pear_admin/extensions/init_jwt.py new file mode 100644 index 0000000..0bad009 --- /dev/null +++ b/pear_admin/extensions/init_jwt.py @@ -0,0 +1,16 @@ +from flask_jwt_extended import JWTManager + +from pear_admin.orms.user import UserORM + +jwt = JWTManager() + + +@jwt.user_identity_loader +def user_identity_lookup(user): + return user.id + + +@jwt.user_lookup_loader +def user_lookup_callback(_jwt_header, jwt_data): + identity = jwt_data["sub"] + return UserORM.query.filter_by(id=identity).one_or_none()