Changeset 6268 for TI12-security


Ignore:
Timestamp:
05/01/10 15:46:19 (10 years ago)
Author:
pjkersha
Message:
 
Location:
TI12-security/trunk/NDGSecurity/python/ndg_security_server/ndg/security/server/wsgi
Files:
13 added
3 deleted
3 edited
2 moved

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/NDGSecurity/python/ndg_security_server/ndg/security/server/wsgi/authz/result_handler/genshi/__init__.py

    r6267 r6268  
    2222class GenshiPEPResultHandlerMiddleware(SessionMiddlewareBase): 
    2323    """Genshi based PEP result handler 
    24     """ 
    25     PROPERTY_NAMES = ( 
    26         'messageTemplate', 
    27         'templateName', 
    28         'templateRootDir' 
    29     ) 
    30     __slots__ = PROPERTY_NAMES 
    31          
     24    """        
    3225    DEFAULT_TMPL_NAME = 'accessdenied.html' 
    3326    DEFAULT_TMPL_DIR = path.join(path.dirname(__file__), 'templates') 
     27    DEFAULT_STATIC_CONTENT_DIR = path.join(path.dirname(__file__), 'layout') 
    3428     
    3529    MSG_TMPL = ( 
     
    3933        "access privileges." 
    4034    ) 
     35     
     36    PROPERTY_DEFAULTS = { 
     37        'messageTemplate': MSG_TMPL, 
     38        'templateName': DEFAULT_TMPL_NAME, 
     39        'templateRootDir': DEFAULT_TMPL_DIR, 
     40        'staticContentRootDir': DEFAULT_STATIC_CONTENT_DIR, 
     41        'heading': '', 
     42        'leftLogo': '', 
     43        'leftAlt': '', 
     44        'leftLink': '', 
     45        'leftImage': '', 
     46        'footerText': 'Test deployment only', 
     47        'rightLink': '', 
     48        'rightImage': '', 
     49        'rightAlt': '', 
     50        'helpIcon': '' 
     51    } 
     52    __slots__ = PROPERTY_DEFAULTS 
    4153     
    4254    def __init__(self, app, global_conf, prefix='', **app_conf): 
     
    5870                
    5971        # Initialise attributes 
    60         for i in GenshiRendering.PROPERTY_NAMES: 
    61             setattr(self, i, '') 
     72        for k, v in GenshiPEPResultHandlerMiddleware.PROPERTY_DEFAULTS.items(): 
     73            setattr(self, k, v) 
    6274          
    6375        # Update from keywords    
    6476        for i in app_conf: 
    6577            setattr(self, i, app_conf[i]) 
    66  
    67         if not self.templateRootDir: 
    68             self.templateRootDir = \ 
    69                             GenshiPEPResultHandlerMiddleware.DEFAULT_TMPL_DIR 
    70           
    71         if not self.messageTemplate: 
    72             self.messageTemplate = GenshiPEPResultHandlerMiddleware.MSG_TMPL 
    73              
    74         if not self.templateName: 
    75             self.templateName = \ 
    76                 GenshiPEPResultHandlerMiddleware.DEFAULT_TMPL_NAME 
    7778             
    7879        self.__loader = TemplateLoader(self.templateRootDir, auto_reload=True) 
     
    8081    @NDGSecurityMiddlewareBase.initCall 
    8182    def __call__(self, environ, start_response): 
     83        """Render access denied message or else if user is not authenticated, 
     84        set HTTP 401 response 
    8285         
     86        @type environ: dict 
     87        @param environ: WSGI environment variables dictionary 
     88        @type start_response: function 
     89        @param start_response: standard WSGI start response function 
     90        @rtype: iterable 
     91        @return: response 
     92        """  
    8393        if not self.isAuthenticated: 
    8494            # sets 401 response to be trapped by authentication handler 
     
    105115    def __setattr__(self, name, value): 
    106116        """Apply some generic type checking""" 
    107         if name in GenshiRendering.PROPERTY_NAMES: 
     117        if name in GenshiPEPResultHandlerMiddleware.PROPERTY_DEFAULTS: 
    108118            if not isinstance(value, basestring): 
    109119                raise TypeError('Expecting string type for %r attribute; got ' 
     
    124134                      doc="Genshi TemplateLoader instance")   
    125135           
    126     def _render(self, **kw): 
     136    def _render(self, c=None, **kw): 
    127137        '''Wrapper for Genshi template rendering 
     138         
     139        @type c: None/object 
     140        @param c: reference to object to pass into template - defaults to self 
    128141        @type kw: dict 
    129142        @param kw: keywords to pass to template 
    130143        @rtype: string 
    131144        @return: rendered template 
    132         '''         
     145        '''     
     146        if c is None: 
     147            kw['c'] = self  
     148               
    133149        tmpl = self.loader.load(self.templateName) 
    134150        rendering = tmpl.generate(**kw).render('html', doctype='html') 
  • TI12-security/trunk/NDGSecurity/python/ndg_security_server/ndg/security/server/wsgi/authz/result_handler/genshi/templates/__init__.py

    r6266 r6268  
     1"""NDG Security templates directory for GenshiPEPResultHandlerMiddleware Genshi  
     2based sign-in interface 
     3 
     4NERC Data Grid Project 
     5""" 
     6__author__ = "P J Kershaw" 
     7__date__ = "05/01/10" 
     8__copyright__ = "(C) 2010 Science and Technology Facilities Council" 
     9__contact__ = "Philip.Kershaw@stfc.ac.uk" 
     10__revision__ = "$Id: $" 
     11__license__ = "BSD - see LICENSE file in top-level directory" 
  • TI12-security/trunk/NDGSecurity/python/ndg_security_server/ndg/security/server/wsgi/authz/result_handler/genshi/templates/accessdenied.html

    r6267 r6268  
    1111            <div id="errorContent"> 
    1212                <div class="error" py:if="c.xml"> 
    13                 $c.xml 
     13                $xml 
    1414                </div> 
    1515            </div> 
  • TI12-security/trunk/NDGSecurity/python/ndg_security_server/ndg/security/server/wsgi/authz/result_handler/genshi/templates/base.html

    r6267 r6268  
    2222 
    2323    <!-- Page Footer follows --> 
    24     <div py:def="footer(showLoginStatus=True)" id="footer"> 
    25         <table width="100%"> 
    26             <tbody> 
    27                 <tr> 
    28                     <td align="left" width="40%" valign="top"> 
    29                         <table> 
    30                             <tbody> 
    31                                 <tr> 
    32                                     <td valign="top" py:if="c.leftImage and c.leftLink"><span py:replace="linkimage(c.leftLink, c.leftImage, c.leftAlt)"/></td> 
    33                                     <td valign="top" py:if="c.footerText">${HTML(c.footerText)}</td> 
    34                                 </tr> 
    35                             </tbody> 
    36                         </table> 
    37                     </td> 
    38                     <td width="40%" align="center" valign="top"> 
    39                         <div py:if="c.loginStatus and showLoginStatus" id="loginStatus"> 
    40                             <div py:if="'username' in c.session" id="loggedIn"> 
    41                                 <table> 
    42                                     <tbody> 
    43                                         <tr> 
    44                                             <td valign="top">  
    45                                                 <!-- Create link using embedded python  
    46                                                     construct because including a link with '&' 
    47                                                     directly causes an error 
    48                                                 --> 
    49                                                 <?python 
    50                                                     logOutLink='%s?submit=true&success_to=%s&fail_to=%s' % \ 
    51                                                     (c.urls['url_loginsubmit'],  
    52                                                      c.urls['url_login'], 
    53                                                      c.urls['url_mainpage']) 
    54                                                 ?> 
    55                                                 Logged in as ${c.session['username']}.  
    56                                                 [<a class="FooterLink" href="$logOutLink">Log out</a>] 
    57                                             </td> 
    58                                         </tr> 
    59                                     </tbody> 
    60                                 </table> 
    61                             </div> 
    62                             <div py:if="'username' not in c.session" id="loggedOut"> 
    63                                 <table><tbody><tr><td valign="top">  
    64                                     Other services may be available if you <a href="${c.urls['url_login']}" class="FooterLink">login</a>. 
    65                                 </td></tr></tbody></table> 
    66                             </div> 
    67                         </div> 
    68                     </td> 
    69                     <td valign="top" align="right" width="20%"><span py:replace="linkimage(c.rightLink, c.rightImage, c.rightAlt)"/></td> 
    70                 </tr> 
    71             </tbody> 
    72         </table> 
     24    <div py:def="footer()" id="footer"> 
     25        <table width="100%"><tbody> 
     26            <tr> 
     27                <td align="left" width="60%" valign="top"> 
     28                    <table> 
     29                        <tbody> 
     30                            <tr> 
     31                                <td valign="top" py:if="c.leftImage and c.leftLink"><span py:replace="linkimage(c.leftLink, c.leftImage, c.leftAlt)"/></td> 
     32                                <td valign="top" py:if="c.footerText">${HTML(c.footerText)}</td> 
     33                            </tr> 
     34                        </tbody> 
     35                    </table> 
     36                </td> 
     37                <td align="right" valign="top" width="40%"><span py:replace="linkimage(c.rightLink, c.rightImage, c.rightAlt)"/></td> 
     38            </tr> 
     39        </tbody></table> 
    7340    </div> 
    74     
     41     
    7542    <!-- Utility Functions follow --> 
    7643     
  • TI12-security/trunk/NDGSecurity/python/ndg_security_server/ndg/security/server/wsgi/openid/relyingparty/signin_interface/genshi/templates/__init__.py

    r6069 r6268  
    1 """NDG Security templates directory for OpenIDRelyingPartyMiddleware Buffet  
     1"""NDG Security templates directory for OpenIDRelyingPartyMiddleware Genshi  
    22based sign-in interface 
    33 
    4 NERC Data Grid Project 
     4NERC DataGrid Project 
    55""" 
    66__author__ = "P J Kershaw" 
Note: See TracChangeset for help on using the changeset viewer.