from flask import Blueprint, current_app from flask_jwt_extended import jwt_required, create_access_token from flask_apispec import use_kwargs, marshal_with, doc from marshmallow import fields from api.exceptions import BadRequestException import api.constants as constants from .serializers import token_response_schema blueprint = Blueprint('login', __name__) @doc(tags=['login']) @blueprint.route('', methods=['POST']) @jwt_required(optional=True) @use_kwargs({ 'username': fields.Str(required=True), 'password': fields.Str(required=True) }) @marshal_with(token_response_schema) def login_user(username, password, **kwargs): if username == constants.API_USER and password == current_app.config[constants.API_PASS]: return {'token': create_access_token(identity=username, fresh=True, expires_delta=False)} else: raise BadRequestException("Wrong combination of username and password")