mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2024-12-27 03:44:19 +00:00
31 lines
888 B
Python
31 lines
888 B
Python
|
from flask_httpauth import HTTPBasicAuth, HTTPTokenAuth
|
||
|
from sqlalchemy import or_
|
||
|
from werkzeug.http import HTTP_STATUS_CODES
|
||
|
from ..models import User
|
||
|
|
||
|
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
|