docs: def make_authorization_endpoint(missing_redirect_uri,
                                  authorization_endpoint_uri,
                                  authorization_template_name):
    """ Returns a endpoint that handles OAuth authorization requests.
  
  
    The template described by ``authorization_template_name`` is rendered with a
    Django ``RequestContext`` with the following variables:
  
    * ``form``: a Django ``Form`` that may hold data internal to the ``djoauth2``
      application.
    * ``client``: The :py:class:`djoauth2.models.Client` requesting access to the
      user's scopes.
    * ``scopes``: A list of :py:class:`djoauth2.models.Scope`, one for each of
      the scopes requested by the client.
    * ``form_action``: The URI to which the form should be submitted -- use this
      value in the ``action=""`` attribute on a ``<form>`` element.
  
    :param missing_redirect_uri: a string, the URI to which to redirect the user
        when the request is made by a client without a valid redirect URI.
  
    :param authorization_endpoint_uri: a string, the URI of this endpoint. Used
        by the authorization form so that the form is submitted to this same
        endpoint.
  
    :param authorization_template_name: a string, the name of the template to
        render when handling authorization requests.
  
    :rtype: A view function endpoint.
    """
    @login_required
    @require_http_methods(['GET', 'POST'])
    def authorization_endpoint(request):
      auth_code_generator = AuthorizationCodeGenerator(missing_redirect_uri)
  
      try:
        auth_code_generator.validate(request)
      except AuthorizationError as authorization_error:
        return auth_code_generator.make_error_redirect(authorization_error)
  
      if request.method == 'GET':
        return render(request, authorization_template_name, {
            'form': Form(),
            'client': auth_code_generator.client,
            'scopes': auth_code_generator.valid_scope_objects,
            'form_action': update_parameters(
                authorization_endpoint_uri,
                auth_code_generator.get_request_uri_parameters(as_dict=True)),
          })
  
      if request.method == 'POST':
        form = Form(request)
        if form.is_valid() and request.POST.get('user_action') == 'Accept':
          return auth_code_generator.make_success_redirect()
        else:
          return auth_code_generator.make_error_redirect()
  
    return authorization_endpoint