39 lines
1015 B
Python
39 lines
1015 B
Python
|
from binascii import Error as asciiError
|
||
|
|
||
|
from flask import Blueprint, jsonify, request
|
||
|
from flask.views import View
|
||
|
from werkzeug.exceptions import Unauthorized
|
||
|
|
||
|
from ereuse_devicehub.auth import Auth
|
||
|
|
||
|
api = Blueprint('api', __name__, url_prefix='/api')
|
||
|
|
||
|
|
||
|
class LoginMix(View):
|
||
|
def __init__(self, *args, **kwargs):
|
||
|
super().__init__(*args, **kwargs)
|
||
|
self.authenticate()
|
||
|
|
||
|
def authenticate(self):
|
||
|
unauthorized = Unauthorized('Provide a suitable token.')
|
||
|
basic_token = request.headers.get('Authorization', " ").split(" ")
|
||
|
if not len(basic_token) == 2:
|
||
|
raise unauthorized
|
||
|
|
||
|
token = basic_token[1]
|
||
|
try:
|
||
|
token = Auth.decode(token)
|
||
|
except asciiError:
|
||
|
raise unauthorized
|
||
|
self.user = Auth().authenticate(token)
|
||
|
|
||
|
|
||
|
class InventoryView(LoginMix):
|
||
|
methods = ['POST']
|
||
|
|
||
|
def dispatch_request(self):
|
||
|
return jsonify("Ok")
|
||
|
|
||
|
|
||
|
api.add_url_rule('/inventory/', view_func=InventoryView.as_view('inventory'))
|