Changeset 2784 for TI05-delivery


Ignore:
Timestamp:
08/08/07 11:51:40 (12 years ago)
Author:
lawrence
Message:

Modifications to support the login redirect

Location:
TI05-delivery/ows_framework/trunk/ows_server/ows_server
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/login.py

    r2775 r2784  
    6161    def index(self): 
    6262        ''' Ok, you really want to login here ''' 
     63        if 'ndgSec' in session: self.__doRedirect() 
    6364        self.__setup() 
    6465 
     
    127128        # Security credentials - proxyCert, userCert, ProxyPriKey and sessID 
    128129        # could be held in the session but how secure is 
    129         # the session - where is it visible? 
    130         # 
    131         # P J Kershaw 25/07/07 
     130         
     131        # Make a security cookie here ... 
    132132        session['ndgSec']={'h':smURI, 
    133133                           'u':username, 
     
    139139        session.save() 
    140140 
    141         # Make a security cookie here ... 
    142          
    143         # Need to pass security creds back to requestor so that they can make 
    144         # a cookie.  If the requestor is in the same domain as the login then 
    145         # this is not necessary. 
    146          
    147         # and now go back to whence we had come 
    148         if c.returnTo!='': 
    149             # is there a keyword on redirect_to that can make this https? See: 
    150             # http://pylonshq.com/project/pylonshq/browser/Pylons/trunk/pylons/decorators/secure.py#L69 
    151             token='smURI=%s&sessID=%s&username=%s&roles=%s' % (smURI, 
    152                                                                sessID, 
    153                                                                username, 
    154                                                                attCert.roles) 
    155             if '?' in c.returnTo: 
    156                 cc=c.returnTo+'&'+token 
    157             else: 
    158                 cc=c.returnTo+'?'+token 
    159             h.redirect_to(cc) 
    160         else: 
    161             c.xml='Login Successful' 
    162             return render_response('content') 
     141        self.__doRedirect() 
    163142             
    164143    def wayf(self): 
     
    206185        return render_response('wayf') 
    207186         
     187    def __doRedirect(self): 
     188         
     189        # Need to pass security creds back to requestor so that they can make 
     190        # a cookie.  If the requestor is in the same domain as the login then 
     191        # this is not necessary. 
     192        # and now go back to whence we had come 
     193        if c.returnTo!='': 
     194            # is there a keyword on redirect_to that can make this https? See: 
     195            # http://pylonshq.com/project/pylonshq/browser/Pylons/trunk/pylons/decorators/secure.py#L69 
     196            token='smURI=%s&sessID=%s&username=%s&roles=%s' % (session['ndgSec']['smURI'], 
     197                                                               session['ndgSec']['sessID'], 
     198                                                               session['ndgSec']['u'], 
     199                                                               session['ndgSec']['r']) 
     200            if '?' in c.returnTo: 
     201                cc=c.returnTo+'&'+token 
     202            else: 
     203                cc=c.returnTo+'?'+token 
     204            h.redirect_to(cc) 
     205        else: 
     206            c.xml='Login Successful' 
     207            return render_response('content') 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/lib/base.py

    r2776 r2784  
    3939                           'r':eval(request.params['roles']), 
    4040                           'sessID':request.params['sessID']} 
    41             # TODO strip out this lot and repaint with a clean URL 
    42              
    43             # TODO: Check what panelView is for  
    44             # 
    45             # P J Kershaw 08/08/07 
     41            
    4642            if 'panelView' not in session: 
    4743                session['panelView']='History' 
    48  
    4944            session.save() 
    5045             
     46            # TODO Make the redirect tidier ... 
     47            for i in request.params: 
     48                if i not in ['smURI','username','roles','sessID']:qs+='%s=%s&'%(i,request.params[i]) 
     49            qs=qs[:-1]  
     50            cc=construct_url(environ,querystring=qs) 
     51            h.redirect_to(cc) 
     52 
    5153        return WSGIController.__call__(self, environ, start_response) 
    5254     
Note: See TracChangeset for help on using the changeset viewer.