I just wrote an article about this very topic a few days ago -- I guess I am a little too slow in getting around to announcing it... to anyone else who is interested in customizing an identity provider, you might check this out:
http://achievewith.us/public/articles/2007/06/13/change-your-identity-in-turbogears-with-entry-points Comments and suggestions are welcome, Tim Barry Hart wrote: > Thanks, this is very helpful! I had mistakenly assumed that only > TurboGears itself could list an entry point in > turbogears.identity.provider. > > Barry > > On Jun 19, 4:28 pm, "Florent Aide" <[EMAIL PROTECTED]> wrote: >> Hi Barry, >> >> In branch 1.0 you can just specify your provider "name" directly in >> the <proj>/config/app.cfg in the "identity.provider" variable. >> >> As long as your provider is registered with the >> "turbogears.identity.provider" entry point it will be found by the >> identity loader. >> >> exemple: >> >> your provider has this kind of thing in setup.py: >> >> ============================ >> >> setup( >> name="SuperIDProvider", >> version="0.1", >> description="the Super ID Provider", >> author="You", >> author_email="[EMAIL PROTECTED]", >> url="http://womewhere.org", >> download_url="", >> license="MIT", >> zip_safe=False, >> entry_points=""" >> [turbogears.identity.provider] >> mysuperprovider = superprovider.plugin:SuperProvider >> """, >> test_suite = 'nose.collector', >> ) >> >> ============================ >> >> If you install such an egg somewhere in you python path, you just have >> to specify in your app.cfg: >> >> identity.provider=mysuperprovider >> >> to have it loaded. >> >> Some explanations: >> ============== >> >> [turbogears.identity.provider] >> mysuperprovider = superprovider.plugin:SuperProvider >> >> Specifies to setuptools that the name "mysuperprovider" is registered >> for the entry point turbogears.identity.provider and points to the >> class SuperProvider that can be found in the superprovider.plugin >> module. >> >> This means your plugin once installed in the python path or in a >> registered plugin dir (more in this subject on demand :)) will be >> found by any program that executes a: >> >> pkg_resources.iter_entry_points("turbogears.identity.provider", >> 'mysuperprovider') >> >> Incidentally in branch 1.0 you can now directly specify the name of a >> class with a full python name like this: >> >> identity.provider=some.python.module.SuperProvider >> >> but this is less elegant and should not be the preferred way ;-) >> >> Hope it help, my brain is melting-down from overwork at the moment so >> excuse my quick and less than complete answer, >> >> Cheers, >> Florent. >> >> On 6/19/07, Barry Hart <[EMAIL PROTECTED]> wrote: >> >> >> >>> I have written a custom identity provider (similar to the existing >>> SqlAlchemyIdentityProvider and SqlObjectIdentityProvider classes). In >>> TG 1.0.1, how do I ask TG to use my provider instead of these? >>> >From my initial reading of the code, the create_default_provider() >>> function in turbogears.identity requires that the class be listed in >>> this section of entry_points.txt of the TurboGears egg: >>> [turbogears.identity.provider] >>> sqlobject = >>> turbogears.identity.soprovider:SqlObjectIdentityProvider >>> sqlalchemy= >>> turbogears.identity.saprovider:SqlAlchemyIdentityProvider >>> But I don't want to patch the TurboGears files to do this. >>> What's the right way to do this? >>> Barry > > > > -- Timothy Freund http://digital-achievement.com http://edodyssey.com --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "TurboGears" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/turbogears?hl=en -~----------~----~----~----~------~----~------~--~---

