~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to www/dispatch/__init__.py

  • Committer: wagrant
  • Date: 2008-07-22 05:03:42 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:932
dispatch (public): Don't attempt to get user details if we are on the
      public site, as that generates a cookie. While we're at it, don't
      entirely ignore the selected application in public mode - return
      a 403 if it isn't the public app instead.

Show diffs side-by-side

added added

removed removed

Lines of Context:
86
86
    """
87
87
    # Hack? Try and get the user login early just in case we throw an error
88
88
    # (most likely 404) to stop us seeing not logged in even when we are.
89
 
    req.user = login.get_user_details(req)
 
89
    if not req.publicmode:
 
90
        req.user = login.get_user_details(req)
90
91
 
91
92
    # Check req.app to see if it is valid. 404 if not.
92
93
    if req.app is not None and req.app not in conf.apps.app_url:
97
98
            req.throw_error(Request.HTTP_NOT_FOUND,
98
99
                "There is no application called %s." % repr(req.app))
99
100
 
100
 
    # Special handling for public mode - just call public app and get out
 
101
    # Special handling for public mode - only allow the public app, call it
 
102
    # and get out.
101
103
    # NOTE: This will not behave correctly if the public app uses
102
104
    # write_html_head_foot, but "serve" does not.
103
105
    if req.publicmode:
 
106
        if req.app != conf.apps.public_app:
 
107
            req.throw_error(Request.HTTP_FORBIDDEN,
 
108
                "This application is not available on the public site.")
104
109
        app = conf.apps.app_url[conf.apps.public_app]
105
110
        apps.call_app(app.dir, req)
106
111
        return req.OK