mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2024-12-26 11:24:18 +00:00
35 lines
905 B
Python
35 lines
905 B
Python
from app.models import User
|
|
from flask_httpauth import HTTPBasicAuth, HTTPTokenAuth
|
|
from sqlalchemy import or_
|
|
from werkzeug.http import HTTP_STATUS_CODES
|
|
|
|
basic_auth = HTTPBasicAuth()
|
|
token_auth = HTTPTokenAuth()
|
|
|
|
|
|
@basic_auth.verify_password
|
|
def verify_password(email_or_username, password):
|
|
user = User.query.filter(
|
|
or_(
|
|
User.username == email_or_username,
|
|
User.email == email_or_username.lower()
|
|
)
|
|
).first()
|
|
if user and user.verify_password(password):
|
|
return user
|
|
|
|
|
|
@basic_auth.error_handler
|
|
def basic_auth_error(status):
|
|
return {'error': HTTP_STATUS_CODES.get(status, 'Unknown error')}, status
|
|
|
|
|
|
@token_auth.verify_token
|
|
def verify_token(token):
|
|
return User.check_token(token) if token else None
|
|
|
|
|
|
@token_auth.error_handler
|
|
def token_auth_error(status):
|
|
return {'error': HTTP_STATUS_CODES.get(status, 'Unknown error')}, status
|