[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