Ticket #2407: sage-2407_1.patch

File sage-2407_1.patch, 4.3 KB (added by TimothyClemans, 5 years ago)
  • sage/server/notebook/avatars.py

    # HG changeset patch
    # User Timothy Clemans <timothy.clemans@gmail.com>
    # Date 1222712479 25200
    # Node ID 090db58fb30ae20607983121af2d83e295f86a4f
    # Parent  7dc1a9006c8533fc568fb4d3e91337bc57bea7e5
    #2407
    
    diff -r 7dc1a9006c85 -r 090db58fb30a sage/server/notebook/avatars.py
    a b  
    5757            return 'invalid_user' 
    5858        elif avatarId.failure_type == 'password': 
    5959            return 'invalid_password', avatarId.username 
     60        elif avatarId.failure_type == 'cookies': 
     61            return 'cookies_disabled' 
    6062        else: 
    6163            raise ValueError, 'invalid failure type' 
    6264         
     
    99101    def requestAvatarId(self, credentials): 
    100102        username = credentials.username 
    101103        password = credentials.password 
     104        if username == 'COOKIESDISABLED': 
     105            return defer.succeed(FailedLogin(username, failure_type = 'cookies')) 
     106         
    102107        try: 
    103108            U = twist.notebook.user(username) 
    104109        except KeyError: 
     
    185190                rsrc = twist.FailedToplevel(avatarId, problem='password', username=user_type(avatarId)[1]) 
    186191                return (iweb.IResource, rsrc, self.logout) 
    187192             
     193            elif T[0] == 'cookies_disabled': 
     194                rsrc = twist.FailedToplevel(avatarId, problem='cookies', username=user_type(avatarId)[1]) 
     195                return (iweb.IResource, rsrc, self.logout) 
     196             
    188197            elif T == 'user': 
    189198                rsrc = twist.UserToplevel(self.cookie, avatarId) 
    190199                return (iweb.IResource, rsrc, self.logout) 
  • sage/server/notebook/guard.py

    diff -r 7dc1a9006c85 -r 090db58fb30a sage/server/notebook/guard.py
    a b  
    264264        if request.args.get('startup_token', [''])[0]: 
    265265            import avatars 
    266266            return avatars.TokenCred(request.args.get('startup_token', [''])[0]) 
    267         username = request.args.get('email', [''])[0] 
    268         password = request.args.get('password', [''])[0] 
     267        if request.headers.getHeader('cookie'): 
     268            for C in request.headers.getHeader('cookie'): 
     269                if C.name == 'cookie_test': 
     270                    username = request.args.get('email', [''])[0] 
     271                    password = request.args.get('password', [''])[0] 
     272                else: 
     273                    username = password = 'COOKIESDISABLED' 
     274        else: 
     275            username = password = 'COOKIESDISABLED' 
    269276        return credentials.UsernamePassword(username, password) 
    270277 
    271278    def _loginSuccess(self, (iface, rsrc, logout), session, creds, segments): 
  • sage/server/notebook/twist.py

    diff -r 7dc1a9006c85 -r 090db58fb30a sage/server/notebook/twist.py
    a b  
    21962196    #child_login = LoginResource 
    21972197     
    21982198    def render(self, ctx): 
    2199         return http.Response(stream =  login_page_template(notebook.get_accounts(), notebook.default_user(), recover=notebook.conf()['email'])) 
     2199        response = http.Response(stream =  login_page_template(notebook.get_accounts(), notebook.default_user(), recover=notebook.conf()['email'])) 
     2200        response.headers.setHeader("set-cookie", [http_headers.Cookie('cookie_test', 'cookie_test')]) 
     2201        return response 
    22002202 
    22012203class FailedToplevel(Toplevel): 
    22022204    def __init__(self, info, problem, username=None): 
     
    22102212        # If published pages were disabled, then this should be disabled too. 
    22112213        if self.problem == 'username': 
    22122214            return http.Response(stream = login_page_template(notebook.get_accounts(), notebook.default_user(), is_username_error=True, recover=notebook.conf()['email'])) 
     2215        elif self.problem == 'password': 
     2216            return http.Response(stream = login_page_template(notebook.get_accounts(), self.username, is_password_error=True, recover=notebook.conf()['email'])) 
    22132217        else: 
    2214             return http.Response(stream = login_page_template(notebook.get_accounts(), self.username, is_password_error=True, recover=notebook.conf()['email'])) 
     2218            return http.Response(stream = message("Please enable cookies and try again.")) 
    22152219 
    22162220 
    22172221class UserToplevel(Toplevel):