Source code for inspirehep.modules.accounts.views.login
# -*- coding: utf-8 -*-
#
# This file is part of INSPIRE.
# Copyright (C) 2014-2018 CERN.
#
# INSPIRE is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# INSPIRE is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with INSPIRE. If not, see <http://www.gnu.org/licenses/>.
#
# In applying this license, CERN does not waive the privileges and immunities
# granted to it by virtue of its status as an Intergovernmental Organization
# or submit itself to any jurisdiction.
from __future__ import absolute_import, division, print_function
from flask_security.utils import login_user, verify_password
from flask import Blueprint, jsonify, request
from invenio_accounts.models import User
login_blueprint = Blueprint(
'inspirehep_accounts_login',
__name__,
)
@login_blueprint.route('/login', methods=['POST'])
[docs]def login():
body = request.get_json()
email = body['email']
password = body['password']
user = User.query.filter_by(email=email).one_or_none()
if user and verify_password(password, user.password):
login_user(user)
return jsonify({
'data': {
'email': user.email,
'roles': [role.name for role in user.roles]
}
})
return jsonify({
'message': 'Email or password is incorrect'
}), 422