The cause of the problem was that I had conflicting repoze.what libraries 
installed. So I removed repoze.* from site-packages, updated setup.py and 
setup.cfg from another newly quickstarted TG 2.2 project and ran it to 
install correct versions.

All this left me with question: *How do you update files coming from 
quickstart process like setup.py when you upgrade TG? By hand?*

Other problem was that I misunderstood the role of ApplicationAuthMetadata -
* it does not authenticate, only fetches the metadata after successful 
authentication is done*. Can you please add this to the documentation? It 
maybe is not clear on first reading and I was under impression I can modify 
the authentication there (for example, to allow case-insensitive logins).

Regards and thanks for help!

Juraj

Dňa sobota, 13. októbra 2012 18:19:39 UTC+2 Alessandro Molina napísal(-a):
>
> If you had to make a change to TurboGears itself then there is 
> something wrong in the way authentication is configured for your 
> application. 
>
> A working 2.2 authentication setup should look like: 
>
> base_config.sa_auth.cookie_secret = "ChangeME" 
> base_config.auth_backend = 'sqlalchemy' 
> base_config.sa_auth.user_class = model.User 
>
> from tg.configuration.auth import TGAuthMetadata 
> class ApplicationAuthMetadata(TGAuthMetadata): 
>     [...] 
>
> base_config.sa_auth.dbsession = model.DBSession 
> base_config.sa_auth.authmetadata = 
> ApplicationAuthMetadata(base_config.sa_auth) 
> base_config.sa_auth.form_plugin = None 
> base_config.sa_auth.charset = 'utf-8' 
> base_config.sa_auth.post_login_url = '/post_login' 
> base_config.sa_auth.post_logout_url = '/post_logout' 
>
> Nothing else should be required and might actually cause issues as 
> everything that is available inside sa_auth property is passed to 
> repoze setup and can actually change the way your authentication is 
> configured. 
>
> On Sat, Oct 13, 2012 at 12:51 PM, Juraj Variny 
> <[email protected]<javascript:>> 
> wrote: 
> > After some digging, I found out following: 
> > 
> > It is necessary to comment out following settings in app_cfg.py . They 
> were 
> > inherited from TG 2.1: 
> > 
> > #base_config.sa_auth.group_class = model.Group 
> > 
> > #base_config.sa_auth.permission_class = model.Permission 
> > 
> > and commenting out line 169 (starting with who_args['authenticators']) 
> in 
> > TurboGears2-2.2.0-py2.7.egg/tg/configuration/auth.py seems to fix the 
> > problem: 
> > 
> >>     # If no identifiers are provided in repoze setup arguments 
> >>     # then create a default one using AuthTktCookiePlugin. 
> >>     if 'identifiers' not in who_args: 
> >>         from repoze.who.plugins.auth_tkt import AuthTktCookiePlugin 
> >>         cookie = AuthTktCookiePlugin(cookie_secret, cookie_name, 
> >>                                      timeout=cookie_timeout, 
> >>                                      reissue_time=cookie_reissue_time) 
> >>         who_args['identifiers'] = [('cookie', cookie)] 
> >>         #who_args['authenticators'].insert(0, ('cookie', cookie)) 
> >> 
> >>     # If no form plugin is provided then create a default 
> >>     # one using the provided options. 
> > 
> > 
> > Can anyone please confirm this so that I'm not inadvertently crippling 
> > something? 
> > 
> > 
> > Juraj 
> > 
> > 
> > Dňa sobota, 13. októbra 2012 11:51:46 UTC+2 Juraj Variny napísal(-a): 
> >> 
> >> Hi, added straight-from-the-manual ApplicationAuthMetadata to my 
> >> app_cfg.py: 
> >> 
> >> 
> >>> #This tells to TurboGears how to retrieve the data for your user 
> >>> 
> >>> class ApplicationAuthMetadata(TGAuthMetadata): 
> >>> 
> >>> def __init__(self, sa_auth): 
> >>> 
> >>> self.sa_auth = sa_auth 
> >>> 
> >>> def get_user(self, identity, userid): 
> >>> 
> >>> return 
> >>> 
> self.sa_auth.dbsession.query(self.sa_auth.user_class).filter_by(user_name=userid).first()
>  
>
> >>> 
> >>> def get_groups(self, identity, userid): 
> >>> 
> >>> return [g.group_name for g in identity['user'].groups] 
> >>> 
> >>> def get_permissions(self, identity, userid): 
> >>> 
> >>> return [p.permission_name for p in identity['user'].permissions] 
> >>> 
> >>> 
> >>> base_config.sa_auth.authmetadata = 
> >>> ApplicationAuthMetadata(base_config.sa_auth) 
> >>> 
> >> 
> >> and immediately got exception below. If I comment out the 
> >> base_config.sa_auth.authmetadata setting, all works normally. 
> >> 
> >> TIA, 
> >> 
> >> Juraj 
> >> 
> >> 
> >>> -------------------- Restarting -------------------- 
> >>> Traceback (most recent call last): 
> >>>   File "/home/juro/work/coinbr/tg2env/bin/paster", line 8, in <module> 
> >>>     load_entry_point('PasteScript==1.7.5', 'console_scripts', 
> 'paster')() 
> >>>   File 
> >>> 
> "/home/juro/work/coinbr/tg2env/lib/python2.7/site-packages/PasteScript-1.7.5-py2.7.egg/paste/script/command.py",
>  
>
> >>> line 104, in run 
> >>>     invoke(command, command_name, options, args[1:]) 
> >>>   File 
> >>> 
> "/home/juro/work/coinbr/tg2env/lib/python2.7/site-packages/PasteScript-1.7.5-py2.7.egg/paste/script/command.py",
>  
>
> >>> line 143, in invoke 
> >>>     exit_code = runner.run(args) 
> >>>   File 
> >>> 
> "/home/juro/work/coinbr/tg2env/lib/python2.7/site-packages/PasteScript-1.7.5-py2.7.egg/paste/script/command.py",
>  
>
> >>> line 238, in run 
> >>>     result = self.command() 
> >>>   File 
> >>> 
> "/home/juro/work/coinbr/tg2env/lib/python2.7/site-packages/PasteScript-1.7.5-py2.7.egg/paste/script/serve.py",
>  
>
> >>> line 284, in command 
> >>>     relative_to=base, global_conf=vars) 
> >>>   File 
> >>> 
> "/home/juro/work/coinbr/tg2env/lib/python2.7/site-packages/PasteScript-1.7.5-py2.7.egg/paste/script/serve.py",
>  
>
> >>> line 321, in loadapp 
> >>>     **kw) 
> >>>   File 
> >>> 
> "/home/juro/work/coinbr/tg2env/lib/python2.7/site-packages/PasteDeploy-1.5.0-py2.7.egg/paste/deploy/loadwsgi.py",
>  
>
> >>> line 247, in loadapp 
> >>>     return loadobj(APP, uri, name=name, **kw) 
> >>>   File 
> >>> 
> "/home/juro/work/coinbr/tg2env/lib/python2.7/site-packages/PasteDeploy-1.5.0-py2.7.egg/paste/deploy/loadwsgi.py",
>  
>
> >>> line 272, in loadobj 
> >>>     return context.create() 
> >>>   File 
> >>> 
> "/home/juro/work/coinbr/tg2env/lib/python2.7/site-packages/PasteDeploy-1.5.0-py2.7.egg/paste/deploy/loadwsgi.py",
>  
>
> >>> line 710, in create 
> >>>     return self.object_type.invoke(self) 
> >>>   File 
> >>> 
> "/home/juro/work/coinbr/tg2env/lib/python2.7/site-packages/PasteDeploy-1.5.0-py2.7.egg/paste/deploy/loadwsgi.py",
>  
>
> >>> line 146, in invoke 
> >>>     return fix_call(context.object, context.global_conf, 
> >>> **context.local_conf) 
> >>>   File 
> >>> 
> "/home/juro/work/coinbr/tg2env/lib/python2.7/site-packages/PasteDeploy-1.5.0-py2.7.egg/paste/deploy/util.py",
>  
>
> >>> line 59, in fix_call 
> >>>     reraise(*exc_info) 
> >>>   File 
> >>> 
> "/home/juro/work/coinbr/tg2env/lib/python2.7/site-packages/PasteDeploy-1.5.0-py2.7.egg/paste/deploy/compat.py",
>  
>
> >>> line 22, in reraise 
> >>>     exec('raise t, e, tb', dict(t=t, e=e, tb=tb)) 
> >>>   File 
> >>> 
> "/home/juro/work/coinbr/tg2env/lib/python2.7/site-packages/PasteDeploy-1.5.0-py2.7.egg/paste/deploy/util.py",
>  
>
> >>> line 56, in fix_call 
> >>>     val = callable(*args, **kw) 
> >>>   File 
> >>> 
> "/home/juro/work/coinbr/tg2env/Coin-Broker/coinbr/config/middleware.py", 
> >>> line 35, in make_app 
> >>>     app = make_base_app(global_conf, full_stack=True, **app_conf) 
> >>>   File 
> >>> 
> "/home/juro/work/coinbr/tg2env/lib/python2.7/site-packages/TurboGears2-2.2.0-py2.7.egg/tg/configuration/app_config.py",
>  
>
> >>> line 962, in make_base_app 
> >>>     app = self.add_auth_middleware(app, skip_authentication) 
> >>>   File 
> >>> 
> "/home/juro/work/coinbr/tg2env/lib/python2.7/site-packages/TurboGears2-2.2.0-py2.7.egg/tg/configuration/app_config.py",
>  
>
> >>> line 721, in add_auth_middleware 
> >>>     app = setup_auth(app, skip_authentication=skip_authentication, 
> >>> **auth_args) 
> >>>   File 
> >>> 
> "/home/juro/work/coinbr/tg2env/lib/python2.7/site-packages/TurboGears2-2.2.0-py2.7.egg/tg/configuration/auth.py",
>  
>
> >>> line 229, in setup_auth 
> >>>     return PluggableAuthenticationMiddleware(app, **who_args) 
> >>> TypeError: __init__() got an unexpected keyword argument 
> >>> 'permission_class' 
> >>> 
> >> 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "TurboGears" group. 
> > To view this discussion on the web visit 
> > https://groups.google.com/d/msg/turbogears/-/73dmR4UrHo0J. 
> > 
> > To post to this group, send email to 
> > [email protected]<javascript:>. 
>
> > To unsubscribe from this group, send email to 
> > [email protected] <javascript:>. 
> > For more options, visit this group at 
> > http://groups.google.com/group/turbogears?hl=en. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/turbogears/-/tN7Pxqphl1sJ.
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.

Reply via email to