Ignore:
Timestamp:
Dec 20, 2009, 9:44:19 PM (14 years ago)
Author:
broder
Message:

Get login information from Apache, if available

File:
1 edited

Legend:

Unmodified
Added
Removed
  • package_branches/invirt-web/cherrypy-rebased/code/view.py

    r2669 r2670  
    7979            "You are not authorized to access that resource")
    8080
    81 cherrypy.tools.require_login = cherrypy.Tool('on_start_resource', require_login)
     81cherrypy.tools.require_login = cherrypy.Tool('on_start_resource', require_login, priority=150)
     82
     83def remote_user_login():
     84    """Get the current user based on the SSL or GSSAPI environment variables"""
     85    environ = cherrypy.request.wsgi_environ
     86    user = environ.get('REMOTE_USER')
     87    if user is None:
     88        return
     89    else:
     90        cherrypy.request.login = None # clear what cherrypy put there
     91
     92    if environ.get('AUTH_TYPE') == 'Negotiate':
     93        # Convert the krb5 principal into a krb4 username
     94        if not user.endswith('@%s' % config.kerberos.realm):
     95            cherrypy.request.login = False # failed to login
     96        else:
     97            cherrypy.request.login = user.split('@')[0].replace('/', '.')
     98    else:
     99        cherrypy.request.login = user
     100
     101cherrypy.tools.remote_user_login = cherrypy.Tool('on_start_resource', remote_user_login, priority=50)
    82102
    83103def invirtwebstate_init():
Note: See TracChangeset for help on using the changeset viewer.