refactor(api):前后端半分离
This commit is contained in:
@@ -1,17 +1,10 @@
|
||||
from flask import Blueprint, session, redirect, url_for, render_template, request, make_response
|
||||
from flask_login import current_user, login_user, login_required, logout_user
|
||||
from flask_restful import Resource, Api, reqparse
|
||||
from applications.common.admin_log import login_log
|
||||
from applications.common.utils.http import fail_api, success_api
|
||||
from applications.models import User
|
||||
from flask import Blueprint, session
|
||||
from flask_login import login_required, logout_user
|
||||
|
||||
from applications.common.utils.http import success_api
|
||||
from ._utils import get_captcha_image, add_auth_session
|
||||
|
||||
passport_bp = Blueprint('passport', __name__, url_prefix='/passport')
|
||||
passport_api = Api(passport_bp)
|
||||
|
||||
|
||||
def register_passport_views(app):
|
||||
app.register_blueprint(passport_bp)
|
||||
|
||||
|
||||
# 获取验证码
|
||||
@@ -22,47 +15,6 @@ def get_captcha():
|
||||
return resp
|
||||
|
||||
|
||||
@passport_api.resource('/login')
|
||||
class Login(Resource):
|
||||
login_req = reqparse.RequestParser(bundle_errors=True)
|
||||
login_req.add_argument('username', type=str, help='请输入用户名', required=True)
|
||||
login_req.add_argument('password', type=str, help='请输入密码', required=True)
|
||||
login_req.add_argument('captcha', type=str, help='请输入验证码', required=True)
|
||||
|
||||
def get(self):
|
||||
if current_user.is_authenticated:
|
||||
return redirect(url_for('admin.index'))
|
||||
|
||||
return make_response(render_template('admin/login.html'))
|
||||
|
||||
def post(self):
|
||||
|
||||
req = self.login_req.parse_args()
|
||||
|
||||
s_code = session.get("code", None)
|
||||
|
||||
if req.captcha != s_code:
|
||||
return fail_api(msg="验证码错误")
|
||||
user = User.query.filter_by(username=req.username).first()
|
||||
|
||||
if user is None:
|
||||
return fail_api(msg="不存在的用户")
|
||||
|
||||
if user.enable is 0:
|
||||
return fail_api(msg="用户被暂停使用")
|
||||
|
||||
if user.validate_password(req.password):
|
||||
# 登录
|
||||
login_user(user)
|
||||
# 记录登录日志
|
||||
login_log(request, uid=user.id, is_access=True)
|
||||
# 存入权限
|
||||
add_auth_session()
|
||||
return success_api(msg="登录成功")
|
||||
login_log(request, uid=user.id, is_access=False)
|
||||
return fail_api(msg="用户名或密码错误")
|
||||
|
||||
|
||||
# 退出登录
|
||||
@passport_bp.post('/logout')
|
||||
@login_required
|
||||
@@ -70,3 +22,6 @@ def logout():
|
||||
logout_user()
|
||||
session.pop('permissions')
|
||||
return success_api(msg="注销成功")
|
||||
|
||||
|
||||
from . import api
|
||||
|
||||
Reference in New Issue
Block a user