[Zope3-Users] Re: request/principal and PAU users

Riccardo Tonon riccardo.tonon at gmail.com
Wed Jul 12 07:09:21 EDT 2006


It seems to work adding this to overrides.zcml

     <content class="zope.app.authentication.principalfolder.Principal">
     <implements
         interface="zope.security.interfaces.IPrincipal"
         />

     <require
         permission="zope.Public"
         interface="zope.security.interfaces.IPrincipal"/>

   </content>


Any hint?

Riccardo


Riccardo Tonon wrote:
> Hi,
> 
> I've implemented a site that uses both Principal (for external users)and 
> PAU (for intranet users).
> 
> It use a customized skin and in the template.pt file I want to print out 
>  the username.
> 
> The following line works if I'm connected as an external user (defined 
> in principals.zcml)
> 
>     <b tal:context="request/principal/title">User</b>
> 
> but it raise an error when I'm connected as a PAU user.
> 
>     ForbiddenAttribute: ('id', Principal(u'ldap.tonon'))
> 
> 
> I attached the complete Traceback error I get.
> 
> Please, does anyone have a solution?
> 
> Thank you,
> Riccardo
> 
> 
> 
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> Traceback (most recent call last):
>   File "D:\home\Zope-3.2.1\src\zope\publisher\publish.py", line 133, in publish
>     result = publication.callObject(request, obj)
>   File "D:\home\Zope-3.2.1\src\zope\app\publication\zopepublication.py", line 161, in callObject
>     return mapply(ob, request.getPositionalArguments(), request)
>   File "D:\home\Zope-3.2.1\src\zope\publisher\publish.py", line 108, in mapply
>     return debug_call(obj, args)
>    - __traceback_info__: <bound method ZPTPageEval.index of <zope.app.publisher.browser.viewmeta.ZPTPageEval object at 0
>   File "D:\home\Zope-3.2.1\src\zope\publisher\publish.py", line 114, in debug_call
>     return obj(*args)
>   File "D:\home\Zope-3.2.1\src\zope\app\zptpage\browser\zptpage.py", line 29, in index
>     return template.render(request, **kw)
>   File "D:\home\Zope-3.2.1\src\zope\app\zptpage\zptpage.py", line 92, in render
>     sourceAnnotations=debug_flags.sourceAnnotations)
>   File "D:\home\Zope-3.2.1\src\zope\pagetemplate\pagetemplate.py", line 117, in pt_render
>     strictinsert=0, sourceAnnotations=sourceAnnotations)()
>   File "D:\home\Zope-3.2.1\src\zope\tal\talinterpreter.py", line 276, in __call__
>     self.interpret(self.program)
>   File "D:\home\Zope-3.2.1\src\zope\tal\talinterpreter.py", line 351, in interpret
>     handlers[opcode](self, args)
>   File "D:\home\Zope-3.2.1\src\zope\tal\talinterpreter.py", line 907, in do_useMacro
>     self.interpret(macro)
>   File "D:\home\Zope-3.2.1\src\zope\tal\talinterpreter.py", line 351, in interpret
>     handlers[opcode](self, args)
>   File "D:\home\Zope-3.2.1\src\zope\tal\talinterpreter.py", line 537, in do_optTag_tal
>     self.do_optTag(stuff)
>   File "D:\home\Zope-3.2.1\src\zope\tal\talinterpreter.py", line 522, in do_optTag
>     return self.no_tag(start, program)
>   File "D:\home\Zope-3.2.1\src\zope\tal\talinterpreter.py", line 517, in no_tag
>     self.interpret(program)
>   File "D:\home\Zope-3.2.1\src\zope\tal\talinterpreter.py", line 351, in interpret
>     handlers[opcode](self, args)
>   File "D:\home\Zope-3.2.1\src\zope\tal\talinterpreter.py", line 966, in do_defineSlot
>     self.interpret(slot)
>   File "D:\home\Zope-3.2.1\src\zope\tal\talinterpreter.py", line 351, in interpret
>     handlers[opcode](self, args)
>   File "D:\home\Zope-3.2.1\src\zope\tal\talinterpreter.py", line 907, in do_useMacro
>     self.interpret(macro)
>   File "D:\home\Zope-3.2.1\src\zope\tal\talinterpreter.py", line 351, in interpret
>     handlers[opcode](self, args)
>   File "D:\home\Zope-3.2.1\src\zope\tal\talinterpreter.py", line 537, in do_optTag_tal
>     self.do_optTag(stuff)
>   File "D:\home\Zope-3.2.1\src\zope\tal\talinterpreter.py", line 522, in do_optTag
>     return self.no_tag(start, program)
>   File "D:\home\Zope-3.2.1\src\zope\tal\talinterpreter.py", line 517, in no_tag
>     self.interpret(program)
>   File "D:\home\Zope-3.2.1\src\zope\tal\talinterpreter.py", line 351, in interpret
>     handlers[opcode](self, args)
>   File "D:\home\Zope-3.2.1\src\zope\tal\talinterpreter.py", line 838, in do_loop_tal
>     iterator = self.engine.setRepeat(name, expr)
>   File "D:\home\Zope-3.2.1\src\zope\tales\tales.py", line 682, in setRepeat
>     expr = self.evaluate(expr)
>   File "D:\home\Zope-3.2.1\src\zope\tales\tales.py", line 696, in evaluate
>     return expression(self)
>    - d:\home\riccardo\projects\SrSite\lib\python\srlabs\browser\skin\template.pt
>    - Line 22, Column 12
>    - Expression: <PathExpr standard:u'context/@@view_get_menu/zmi_actions'>
>    - Names:
>       {'args': (),
>        'container': <zope.app.folder.folder.Folder object at 0x03227DF0>,
>        'context': <zope.app.folder.folder.Folder object at 0x03227DF0>,
>        'default': <object object at 0x0099C548>,
>        'loop': {},
>        'nothing': None,
>        'options': {},
>        'repeat': {},
>        'request': <zope.publisher.browser.BrowserRequest instance URL=http://metropolis/index.html>,
>        'template': <zope.app.zptpage.zptpage.ZPTPage object at 0x038F9DF0>,
>        'usage': <zope.pagetemplate.pagetemplate.TemplateUsage object at 0x03AD1830>}
>   File "D:\home\Zope-3.2.1\src\zope\tales\expressions.py", line 205, in __call__
>     return self._eval(econtext)
>   File "D:\home\Zope-3.2.1\src\zope\tales\expressions.py", line 192, in _eval
>     ob = self._subexprs[-1](econtext)
>   File "D:\home\Zope-3.2.1\src\zope\tales\expressions.py", line 124, in _eval
>     ob = self._traverser(ob, element, econtext)
>   File "D:\home\Zope-3.2.1\src\zope\app\pagetemplate\engine.py", line 72, in trustedZopeTraverser
>     request=getattr(econtext, 'request', None))
>   File "D:\home\Zope-3.2.1\src\zope\app\traversing\adapters.py", line 124, in traverse
>     curr = traversePathElement(curr, name, path, request=request)
>   File "D:\home\Zope-3.2.1\src\zope\app\traversing\adapters.py", line 179, in traversePathElement
>     return traversable.traverse(nm, further_path)
>    - __traceback_info__: (<zope.app.publisher.browser.viewmeta.MenuAccessView object at 0x039DEE10>, 'zmi_actions')
>   File "D:\home\Zope-3.2.1\src\zope\app\traversing\adapters.py", line 58, in traverse
>     return subject[name]
>    - __traceback_info__: (<zope.app.publisher.browser.viewmeta.MenuAccessView object at 0x039DEE10>, 'zmi_actions', [])
>   File "D:\home\Zope-3.2.1\src\zope\app\publisher\browser\menu.py", line 193, in __getitem__
>     return getMenu(menuId, self.context, self.request)
>   File "D:\home\Zope-3.2.1\src\zope\app\publisher\browser\menu.py", line 177, in getMenu
>     return menu.getMenuItems(object, request)
>   File "D:\home\Zope-3.2.1\src\zope\app\publisher\browser\menu.py", line 54, in getMenuItems
>     if item.available():
>   File "D:\home\Zope-3.2.1\src\zope\app\publisher\browser\menu.py", line 132, in available
>     modules = sys.modules,
>   File "D:\home\Zope-3.2.1\src\zope\tales\expressions.py", line 268, in __call__
>     return int(not econtext.evaluateBoolean(self._c))
>   File "D:\home\Zope-3.2.1\src\zope\tales\tales.py", line 701, in evaluateBoolean
>     return not not self.evaluate(expr)
>   File "D:\home\Zope-3.2.1\src\zope\tales\tales.py", line 696, in evaluate
>     return expression(self)
>    - Expression: <PathExpr standard:u'context/@@principalLastTransactionIsUndo'>
>    - Names:
>       {'context': <zope.app.folder.folder.Folder object at 0x03227DF0>,
>        'default': <object object at 0x0099C548>,
>        'loop': {},
>        'nothing': None,
>        'repeat': {},
>        'request': <zope.publisher.browser.BrowserRequest instance URL=http://metropolis/index.html>}
>   File "D:\home\Zope-3.2.1\src\zope\tales\expressions.py", line 205, in __call__
>     return self._eval(econtext)
>   File "D:\home\Zope-3.2.1\src\zope\tales\expressions.py", line 199, in _eval
>     return ob()
>   File "D:\home\Zope-3.2.1\src\zope\app\publisher\browser\viewmeta.py", line 435, in __call__
>     return meth(*a, **k)
>   File "D:\home\Zope-3.2.1\src\zope\app\undo\browser.py", line 34, in principalLastTransactionIsUndo
>     last=1)
>   File "D:\home\Zope-3.2.1\src\zope\app\undo\__init__.py", line 117, in getPrincipalTransactions
>     return self._getUndoInfo(context, principal, first, last)
>   File "D:\home\Zope-3.2.1\src\zope\app\undo\__init__.py", line 136, in _getUndoInfo
>     specification.update({'user_name': path + ' ' + principal.id})
> ForbiddenAttribute: ('id', Principal(u'ldap.tonon'))
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Zope3-users mailing list
> Zope3-users at zope.org
> http://mail.zope.org/mailman/listinfo/zope3-users



More information about the Zope3-users mailing list