[Zope3-Users] Best way to add a Principal to PAU

Rupert Redington rupert at neontribe.co.uk
Tue Feb 7 04:13:21 EST 2006


Florian Lindner wrote:
> Am Sonntag, 5. Februar 2006 22:37 schrieb Stephan Richter:
>> On Sunday 05 February 2006 12:34, Florian Lindner wrote:
>>> I've managed to add a principal to a principal folder inside a PAU:
>>>
>>>   pau = getUtility(IAuthentication)
>>>   pfolder = pau.keys()[0]
>>>   principal = InternalPrincipal("def", "pwd123","a title", "a
>>> description") pfolder["def"] = principal
>>>
>>> but I doubt that the most elegant way. How can I achieve do it more or
>>> less agnostic form the principal source (or a least from the name and
>>> ordinal postion inside PAU)?
>> Basically, your application should know the location of the Authentication
>> Utility and the name of the principal folder. Also note that the principal
>> class is principal folder specific.
> 
> Ok, so the way above is the way to go?
> 
> Why is the principal class folder specific?
> 
> BTW: Why does z.a.authentication.principalfolder.InternalPrincipal does not 
> implement z.security.interfaces.IPrincipal? Or let 
> z.a.authentication.principalfolder.IInternalPrincipal derive from IPrincipal?
> 
> Florian
> _______________________________________________
> Zope3-users mailing list
> Zope3-users at zope.org
> http://mail.zope.org/mailman/listinfo/zope3-users

This:

    from zope.interface import directlyProvides

    pau = getUtility(IAuthentication)

    for plugin in pau.authenticatorPlugins:
        if directlyProvides(plugin, IMyMarkerInterface):
            pfolder = plugin

Seems to me to avoid embarrassment when there are two authenticators in
the stack in pau and you can't guarantee the position of the one you want.

I think...

Rupert



More information about the Zope3-users mailing list