class_docstr: This mixin adds the expected Tornado authorization hooks:
  
  * get_login_url
  * get_current_user
  * prepare
  
  All of these delegate to the a :class:`~bokeh.serve.auth_provider.AuthProvider`
  confiured on the Bokeh tornado application.
class_docstr_tok: ["This","mixin","adds","the","expected","Tornado","authorization","hooks",":","*","get_login_url","*","get_current_user","*","prepare","All","of","these","delegate","to","the","a",":","class",":","`","~bokeh.serve.auth_provider.AuthProvider","`","confiured","on","the","Bokeh","tornado","application","."]
docstr: Delegates to``get_login_url`` method of the auth provider, or the
  ``login_url`` attribute.
docstr_tok: ["Delegates","to","``","get_login_url","``","method","of","the","auth","provider",",","or","the","``","login_url","``","attribute","."]
code: def get_login_url(self):
      """Delegates to``get_login_url`` method of the auth provider, or the
      ``login_url`` attribute.
  
      """
      if self.application.auth_provider.get_login_url is not None:
          return self.application.auth_provider.get_login_url(self)
      if self.application.auth_provider.login_url is not None:
          return self.application.auth_provider.login_url
      raise RuntimeError(
          "login_url or get_login_url() must be supplied when authentication hooks are enabled"
      )
  
imports: from __future__ import annotations
  import logging
  from tornado.web import RequestHandler
label_desc: Use image node_id 1 for calling the AuthRequestHandler obj's underlying member method code with example usage: obj.get_login_url() and returns: self, self