You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
1007 B
27 lines
1007 B
from flask import Blueprint, request, jsonify
|
|
from flask_jwt_extended import create_access_token
|
|
|
|
from app import LogService
|
|
from app.models import Passenger
|
|
from presenter import PassengerPresenter
|
|
from utils import StateCode, create_response
|
|
|
|
login_bp = Blueprint('login', __name__)
|
|
|
|
#登录模块
|
|
@login_bp.route('/login', methods=['POST'])
|
|
def login():
|
|
data = request.json
|
|
account = data.get('account')
|
|
password = data.get('password')
|
|
if not account or not password:
|
|
return jsonify(create_response(StateCode.PARAMS_ERROR)), 400
|
|
user = Passenger.verifyPassenger(account, password)
|
|
if user:
|
|
# 为新创建的乘客生成访问令牌
|
|
access_token = create_access_token(identity=str(user.id))
|
|
user_presenter = PassengerPresenter(user, {"token": access_token}).as_dict()
|
|
LogService.log()
|
|
return jsonify(create_response(StateCode.SUCCESS, data=user_presenter)), 200
|
|
return jsonify(create_response(StateCode.PASSWORD_INCORRECT)), 400
|