I need to try this. there is a potential issue wich scope of variables.
On May 29, 11:09 am, Mathieu Clabaut <[email protected]> wrote: > Did i miss something ot the following would be ok ? > > def requires_login(self, next=None, message=self.message.access_denied > ): > """ > decorator that prevents access to action if not logged in > """ > > def decorator(action): > > def f(*a, **b): > > if not self.basic() and not self.is_logged_in(): > request = self.environment.request > self.environment.session.flash = message > if not next: > next = self.settings.login_url + '?_next=' + \ > > urllib.quote(URL(r=request,args=request.args, > vars=request.get_vars)) > redirect(next) > return action(*a, **b) > f.__doc__ = action.__doc__ > f.__name__ = action.__name__ > f.__dict__.update(action.__dict__) > return f > > return decorator > > On Tue, May 25, 2010 at 01:07, Massimo Di Pierro > <[email protected]>wrote: > > > It would be nice to be able to pass the following arguments to > > > @auth.requires_login(next=URL(...),message=T(...)) > > > where next is the url to redirect to in case of no login. message is the > > message to be displayed. > > If somebody has time and wants to take a crack at it, let me know. It > > should be possible by modifying only the requires_login method. > > The problem is passing the arguments from the decorator to the function > > being returned. > > > Once the problem is solved we can add the feature to requires_membership > > and requires_permissions. > > > Massimo

