[Zope] Re: external method problems...
Jeffrey Hood
jhood@hmcon.com
Fri, 27 Jun 2003 16:46:03 -0400
Dieter Maurer wrote:
> Jeffrey Hood wrote at 2003-6-26 17:32 -0400:
> > I have an external method (which makes a SOAP call) which when running
> > the
> > test on, works and returns data as expected... however, with the
> > following tal code:
> > ...
> > <table border="1" tal:define="data
> > python:here.getRecords()['item']"> <tr tal:repeat="record data">
> > <td tal:content="python:record[0]">record item 1</td>
> > ...
> > I am getting a basic authentication box... which I don't want... and
> > additionally, no matter if I type in a valid superuser login and
> > password, the box just keeps coming up...
>
> What type of object is "record"?
> What type is "record[i]"?
> Either one seems to be an instance without security declarations.
getRecords() returns:
{u'item': [['1', 'Fido', '5.00'], ['2', 'Spot', '10.00'], ['4', 'Sparky',
'24'], ['9', 'Buffy', '10'], ['10', 'Bobby', '50']]}
(BTW, I'm a beginner with Python/Zope, so forgive me if I don't get the
terminology correct...)
I've been told that that is a dictionary...
> Convert the "record" into a dictionary (in your External Method) or
> give "record[i]" the necessary security declarations (see
> Zope Developer Guide, for details).
If it is a dictionary, is it outside the need for security declarations?
I've looked at the Guide, and don't really understand how to set permissions
on a return value...
>
> > I'm guessing that there is some kind of
> > permission problem, although I don't know why calling it via the url
> > anonymously (http://...../getRecords) returns the same as the test...
> > is there something that I am missing in tal to call the external method
> > that requires setting some permissions ?
>
> You may have encountered a security bug!
>
> ZPublisher (more precisely "BaseResponse") converts the result
> into a string (calling "str"). This is done from unrestricted
> code. It may reveal information which is not available from
> restricted code (as your TAL).
>
> Please file a bug report.
Is there any way around this problem (time is somewhat of an issue...) and
is there any thing that I can return differently that would help... the
external method is simply calling a webservice via SOAP, and the "default"
that it is returning is the dictionary...
Thanks for all of the help...
JH