Re: Problem: Embedding 401 page (not author ized) for "edit" with standard_error_message

Heiko Besemann <[email protected]> Mon, 20 Jul 2009 14:20:35 +0200
Newsgroups gmane.comp.web.zope.silva.devel
Message-ID <415015e84b6d9e253422ffd60b74c3e2@localhost>
Hi Kit,

no its a default Silva / Zope installation with no access protected pages.
I simply created a Silva root cms object in my Zope's root folder and
changed the standard_error_message template for the 401 stuff.

Well, I will try to pdb today evening and figure out whats wrong with it
and let you know if I was successfull.

Cheers,
Heiko


On Mon, 20 Jul 2009 07:34:55 +0200, Kit BLAKE <[email protected]> wrote:
> Hieko,
> Tried to reproduce your problem this weekend, and I get the same  
> messages but not the error with traceback. However I also don't see  
> the 'nice' 401 page.
> 
> Have you set an access restriction on the entire site? When everything  
> from the root is access protected we've seen problems with 401 errors,  
> because seemingly innocuous things such as logo and navigation images  
> are also protected.
> 
> Kit
> 
> 
> On 17 Jul 2009, at 17:24, Heiko Besemann wrote:
> 
>>
>> Hi there,
>>
>> sorry for bugging the dev-list with my problems. However I run into a
>> strange thing tonight I can not explain and need someones professional
>> advice how to get this fixed.
>>
>> Well, Silva uses the "standard_error_message" for rendering custom  
>> errors
>> like 404 (not found), 500 (system problems) and 401 (not  
>> authorized). When
>> one of these errors happends my wish is that Silva will not render the
>> standard_error_message template but uses my custom skins content  
>> area to
>> display the message.
>>
>> So for 404, 401 and 500 I did the following thing:
>>
>> <tal:block tal:condition="python: error_type == 'NotFound'">
>> <html metal:use-macro="context/@@mywonderfullcustomskin/main">
>> <head>
>> <title metal:fill-slot="title">
>> 404 – Resource not found
>> </title>
>> </head>
>> <body>
>> <div metal:fill-slot="body">
>> <h2>404 – Resource not found</h2>
>> <p>
>> Huhu, where is my page gone?
>> </p>
>> </div>
>> </body>
>> </html>
>> </tal:block>
>> </tal:block>
>>
>> Now this works if I type something like
>> "http://www.wattwanderinfo.de/where_is_my_page". The error message  
>> will get
>> displayed withing my custom skin.
>>
>> Next thing I wanted was to render are "401" errors. The above code  
>> differs
>> only for the condition check but everthing else is the same. I use my
>> context/@@mywonderfullcustomskin macro aso.
>>
>> If I try to authenticate as "manager" to get into ZMI and cancel the
>> authentication request, yes I get that permission denied stuff shown
>> correctly on my page. However (and this is the thing I dont  
>> understand) if
>> I try to authenticate as "edit" and cancel authentication I get some  
>> error
>> like the following on my webpage:
>>
>> -- snipp --
>> You are not authorized to access this resource.
>> Username and password are not correct.
>>
>> (Also, the following error occurred while attempting to render the  
>> standard
>> error message, please see the event log for full details:
>> (<Products.Silva.SilvaObject.Zope3ViewAttribute object at 0x01CF2450>,
>> 'mywonderfullcustomskin'))
>> -- snapp --
>>
>> Zope event logfile shows me:
>>
>> -- snipp --
>> 2009-07-17T17:17:52 ERROR root Exception while rendering an error  
>> message
>> Traceback (most recent call last):
>> File "C:\Zope\2.11.1\Zope\lib\python\OFS\SimpleItem.py", line 227, in
>> raise_standardErrorMessage
>> v = s(**kwargs)
>> File "C:\Zope\2.11.1\Zope\lib\python\Shared\DC\Scripts\Bindings.py",  
>> line
>> 313, in __call__
>> return self._bindAndExec(args, kw, None)
>> File "C:\Zope\2.11.1\Zope\lib\python\Shared\DC\Scripts\Bindings.py",  
>> line
>> 350, in _bindAndExec
>> return self._exec(bound_data, args, kw)
>> File
>> "C:\Zope\2.11.1\Zope\lib\python\Products\PageTemplates 
>> \ZopePageTemplate.py",
>> line 330, in _exec
>> result = self.pt_render(extra_context=bound_names)
>> File
>> "C:\Zope\2.11.1\Zope\lib\python\Products\PageTemplates 
>> \ZopePageTemplate.py",
>> line 427, in pt_render
>> result = PageTemplate.pt_render(self, source, extra_context)
>> File
>> "C:\Zope\2.11.1\Zope\lib\python\Products\PageTemplates 
>> \PageTemplate.py",
>> line 96, in pt_render
>> showtal=showtal)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\pagetemplate 
>> \pagetemplate.py",
>> line 115, in pt_render
>> strictinsert=0, sourceAnnotations=sourceAnnotations)()
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py",  
>> line 271,
>> in __call__
>> self.interpret(self.program)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py",  
>> line 346,
>> in interpret
>> handlers[opcode](self, args)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py",  
>> line 536,
>> in do_optTag_tal
>> self.do_optTag(stuff)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py",  
>> line 521,
>> in do_optTag
>> return self.no_tag(start, program)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py",  
>> line 516,
>> in no_tag
>> self.interpret(program)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py",  
>> line 346,
>> in interpret
>> handlers[opcode](self, args)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py",  
>> line 855,
>> in do_condition
>> self.interpret(block)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py",  
>> line 346,
>> in interpret
>> handlers[opcode](self, args)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py",  
>> line 536,
>> in do_optTag_tal
>> self.do_optTag(stuff)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py",  
>> line 521,
>> in do_optTag
>> return self.no_tag(start, program)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py",  
>> line 516,
>> in no_tag
>> self.interpret(program)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py",  
>> line 346,
>> in interpret
>> handlers[opcode](self, args)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py",  
>> line 870,
>> in do_useMacro
>> macro = self.engine.evaluateMacro(macroExpr)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\tales\tales.py", line 696,  
>> in
>> evaluate
>> return expression(self)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\tales\expressions.py",  
>> line 217,
>> in __call__
>> return self._eval(econtext)
>> File
>> "C:\Zope\2.11.1\Zope\lib\python\Products\PageTemplates 
>> \Expressions.py",
>> line 131, in _eval
>> ob = self._subexprs[-1](econtext)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\tales\expressions.py",  
>> line 124,
>> in _eval
>> ob = self._traverser(ob, element, econtext)
>> File
>> "C:\Zope\2.11.1\Zope\lib\python\Products\PageTemplates 
>> \Expressions.py",
>> line 83, in boboAwareZopeTraverse
>> request=request)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\traversing\adapters.py",  
>> line
>> 154, in traversePathElement
>> return namespaceLookup(ns, nm, obj, request)
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\traversing\namespace.py",  
>> line
>> 112, in namespaceLookup
>> return traverser.traverse(name, ())
>> File "C:\Zope\2.11.1\Zope\lib\python\zope\traversing\namespace.py",  
>> line
>> 345, in traverse
>> raise TraversalError(self.context, name)
>> TraversalError: (<Products.Silva.SilvaObject.Zope3ViewAttribute  
>> object at
>> 0x01CF2450>, 'mywonderfullcustomskin')
>>
>> -- snapp --
>>
>> So why is everything working fine for 404 and 401 (with manage
>> authentication), but not for 401 with "edit" authentication?
>>
>> Cheers,
>> Heiko
>>
>>
>>
>> _______________________________________________
>> silva-dev mailing list
>> [email protected]
>> https://lists.infrae.com/mailman/listinfo/silva-dev

_______________________________________________
silva-dev mailing list
[email protected]
https://lists.infrae.com/mailman/listinfo/silva-dev