provide login.html as concept view (for use with a query), + a similar unauthorized view
This commit is contained in:
		
							parent
							
								
									e929a3154e
								
							
						
					
					
						commit
						c029cb2356
					
				
					 2 changed files with 43 additions and 3 deletions
				
			
		|  | @ -1,5 +1,5 @@ | |||
| # | ||||
| #  Copyright (c) 2011 Helmut Merz helmutm@cy55.de | ||||
| #  Copyright (c) 2015 Helmut Merz helmutm@cy55.de | ||||
| # | ||||
| #  This program is free software; you can redistribute it and/or modify | ||||
| #  it under the terms of the GNU General Public License as published by | ||||
|  | @ -17,7 +17,7 @@ | |||
| # | ||||
| 
 | ||||
| """ | ||||
| $Id$ | ||||
| Login, logout, unauthorized stuff. | ||||
| """ | ||||
| 
 | ||||
| from zope.app.security.interfaces import IAuthentication | ||||
|  | @ -25,14 +25,27 @@ from zope.app.security.interfaces import ILogout, IUnauthenticatedPrincipal | |||
| from zope import component | ||||
| from zope.interface import implements | ||||
| 
 | ||||
| from loops.browser.concept import ConceptView | ||||
| from loops.browser.node import NodeView | ||||
| from zope.app.pagetemplate import ViewPageTemplateFile | ||||
| from zope.cachedescriptors.property import Lazy | ||||
| 
 | ||||
| 
 | ||||
| template = ViewPageTemplateFile('auth.pt') | ||||
| 
 | ||||
| 
 | ||||
| class LoginConcept(ConceptView): | ||||
| 
 | ||||
|     template = template | ||||
| 
 | ||||
|     @Lazy | ||||
|     def macro(self): | ||||
|         return self.template.macros['login_form'] | ||||
| 
 | ||||
| 
 | ||||
| class LoginForm(NodeView): | ||||
| 
 | ||||
|     template = ViewPageTemplateFile('auth.pt') | ||||
|     template = template | ||||
| 
 | ||||
|     @Lazy | ||||
|     def macro(self): | ||||
|  | @ -59,3 +72,20 @@ class Logout(object): | |||
|         return self.request.response.redirect(nextUrl) | ||||
| 
 | ||||
| 
 | ||||
| class Unauthorized(ConceptView): | ||||
| 
 | ||||
|     isTopLevel = True | ||||
| 
 | ||||
|     def __init__(self, context, request): | ||||
|         self.context = context | ||||
|         self.request = request | ||||
| 
 | ||||
|     def __call__(self): | ||||
|         response = self.request.response | ||||
|         response.setStatus(403) | ||||
|         # make sure that squid does not keep the response in the cache | ||||
|         response.setHeader('Expires', 'Mon, 26 Jul 1997 05:00:00 GMT') | ||||
|         response.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate') | ||||
|         response.setHeader('Pragma', 'no-cache') | ||||
|         url = self.nodeView.topMenu.url | ||||
|         response.redirect(url + '/unauthorized') | ||||
|  |  | |||
|  | @ -44,6 +44,8 @@ | |||
|         class="loops.browser.auth.Logout" | ||||
|         permission="zope.View" /> | ||||
| 
 | ||||
|   <!-- see also view/adapter "login.html" in section "query views" --> | ||||
| 
 | ||||
|   <!-- macros --> | ||||
| 
 | ||||
|   <page | ||||
|  | @ -537,6 +539,14 @@ | |||
| 
 | ||||
|   <!-- query views --> | ||||
| 
 | ||||
|   <zope:adapter | ||||
|       name="login.html" | ||||
|       for="loops.interfaces.IConcept | ||||
|            zope.publisher.interfaces.browser.IBrowserRequest" | ||||
|       provides="zope.interface.Interface" | ||||
|       factory="loops.browser.auth.LoginConcept" | ||||
|       permission="zope.View" /> | ||||
| 
 | ||||
|   <zope:adapter | ||||
|       name="list_children.html" | ||||
|       for="loops.interfaces.IConcept | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue