feature: 登录&权限拦截
This commit is contained in:
@@ -1,8 +1,48 @@
|
||||
from flask import Blueprint
|
||||
from flask import Blueprint, make_response, redirect, request
|
||||
from flask_jwt_extended import (
|
||||
create_access_token,
|
||||
create_refresh_token,
|
||||
jwt_required,
|
||||
set_access_cookies,
|
||||
set_refresh_cookies,
|
||||
unset_access_cookies,
|
||||
unset_refresh_cookies,
|
||||
)
|
||||
|
||||
from pear_admin.extensions import db
|
||||
from pear_admin.orms import UserORM
|
||||
|
||||
passport_api = Blueprint("passport", __name__)
|
||||
|
||||
|
||||
@passport_api.post("/login")
|
||||
def login_in():
|
||||
return {"message": "登录成功", "code": 0}
|
||||
data = request.get_json()
|
||||
|
||||
user: UserORM = db.session.execute(
|
||||
db.select(UserORM).where(UserORM.username == data["username"])
|
||||
).scalar()
|
||||
|
||||
if not user:
|
||||
return {"message": "用户不存在", "code": -1}, 401
|
||||
if user.check_password(data["password"]):
|
||||
return {"message": "用户密码错误", "code": -1}, 401
|
||||
|
||||
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)
|
||||
|
||||
return response
|
||||
|
||||
|
||||
@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
|
||||
|
||||
Reference in New Issue
Block a user