from micropub import error from .models import IndieAuthCode, Token def auth(request) -> Token: if "HTTP_AUTHORIZATION" in request.META: auth = request.META.get("HTTP_AUTHORIZATION").split(" ") if auth[0] != "Bearer": raise error.bad_req("auth type {0} not supported".format(auth[0])) if len(auth) != 2: raise error.bad_req("invalid Bearer auth format, must be Bearer ") token = auth[1] elif "access_token" in request.POST: token = request.POST.get("access_token") elif "access_token" in request.GET: token = request.GET.get("access_token") else: raise error.unauthorized() try: token = Token.objects.get(pk=token) except Token.DoesNotExist: raise error.forbidden() return token def gen_auth_code(req): code = IndieAuthCode() code.user = req.user code.client_id = req.POST["client_id"] code.redirect_uri = req.POST["redirect_uri"] code.response_type = req.POST.get("response_type", "id") if "scope" in req.POST: code.scope = " ".join(req.POST.getlist("scope")) code.save() return code.id def gen_token(code): tok = Token() tok.user = code.user tok.client_id = code.client_id tok.scope = code.scope tok.save() return tok.id