Done! On Thu, Aug 20, 2015 at 3:06 PM, Massimo Di Pierro < [email protected]> wrote:
> :-) > > > On Thursday, 20 August 2015 10:37:22 UTC-5, Richard wrote: >> >> Also make the redirect a subfunc to be reused... >> >> On Thu, Aug 20, 2015 at 11:36 AM, Richard Vézina < >> [email protected]> wrote: >> >>> Ok, will do it... >>> >>> Richard >>> >>> On Thu, Aug 20, 2015 at 10:53 AM, Anthony <[email protected]> wrote: >>> >>>> Well, you need to know what "next" is, so the redirect has to come >>>> after that. However, there's no reason you couldn't simply refactor the >>>> function a bit -- just move the whole block where "next" is defined to the >>>> very beginning of the function (you could also move the onaccept, >>>> onvalidation, and log definitions earlier) -- that way no unnecessary code >>>> will be executed. >>>> >>>> Anthony >>>> >>>> >>>> On Thursday, August 20, 2015 at 9:54:02 AM UTC-4, Richard wrote: >>>>> >>>>> Is doing this that far in the login function a waste of time? I mean, >>>>> why doing all the form preparation (the validators at the top of the >>>>> function)... Your code is cleaner since you flush session._auth_next and >>>>> for this reason you need ot wait next var is defined... >>>>> >>>>> But why this : >>>>> >>>>> table_user = self.table_user() >>>>> settings = self.settings >>>>> if 'username' in table_user.fields or \ >>>>> not settings.login_email_validate: >>>>> tmpvalidator = >>>>> IS_NOT_EMPTY(error_message=self.messages.is_empty) >>>>> if not settings.username_case_sensitive: >>>>> tmpvalidator = [IS_LOWER(), tmpvalidator] >>>>> else: >>>>> tmpvalidator = >>>>> IS_EMAIL(error_message=self.messages.invalid_email) >>>>> if not settings.email_case_sensitive: >>>>> tmpvalidator = [IS_LOWER(), tmpvalidator] >>>>> >>>>> request = current.request >>>>> response = current.response >>>>> session = current.session >>>>> >>>>> passfield = settings.password_field >>>>> try: >>>>> table_user[passfield].requires[-1].min_length = 0 >>>>> except: >>>>> pass >>>>> >>>>> Comes before exiting the function with the redirect in case user is >>>>> already connected... >>>>> >>>>> The part where request, response, and session get defined is correct >>>>> to be above, but I would put the rest below the bloc " ### use >>>>> session for federated login" >>>>> >>>>> What do you think? >>>>> >>>>> Richard >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> Le mercredi 19 août 2015 17:48:16 UTC-4, Anthony a écrit : >>>>>> >>>>>> Maybe right after the "next" variable is set here >>>>>> <https://github.com/web2py/web2py/blob/master/gluon/tools.py#L2545>, >>>>>> something like: >>>>>> >>>>>> if self.is_logged_in(): >>>>>> if next == session._auth_next: >>>>>> del session._auth_next >>>>>> redirect(next, client_side=settings.client_side) >>>>>> >>>>>> Maybe abstract those last three lines into a function, as nearly the >>>>>> same code is executed in two other places. >>>>>> >>>>>> Anthony >>>>>> >>>>>> On Wednesday, August 19, 2015 at 2:23:57 PM UTC-4, Richard wrote: >>>>>>> >>>>>>> Not sure it required to check if next var is empty or not... If >>>>>>> there is no next in the url it should log in...: >>>>>>> >>>>>>> if self.is_logged_in(): >>>>>>> if self.get_vars_next() is not None and self. >>>>>>> get_vars_next() != '': >>>>>>> redirect(self.get_vars_next()) >>>>>>> else: >>>>>>> redirect('default', 'index') >>>>>>> >>>>>>> So, maybe this could be rewrite like so : >>>>>>> >>>>>>> >>>>>>> if self.get_vars_next() is not None and self.get_vars_next() != >>>>>>> '' and self.is_logged_in(): >>>>>>> redirect(self.get_vars_next()) >>>>>>> >>>>>>> Richard >>>>>>> >>>>>>> Le mercredi 19 août 2015 14:17:41 UTC-4, Richard a écrit : >>>>>>>> >>>>>>>> I had this here and it works... Though, it needs to check if _next >>>>>>>> var is populated, if not redirect on default/index maybe... >>>>>>>> >>>>>>>> What do you think... I am not well versed in security could this >>>>>>>> create a security hole? >>>>>>>> >>>>>>>> def login( >>>>>>>> self, >>>>>>>> next=DEFAULT, >>>>>>>> onvalidation=DEFAULT, >>>>>>>> onaccept=DEFAULT, >>>>>>>> log=DEFAULT, >>>>>>>> ): >>>>>>>> """ >>>>>>>> returns a login form >>>>>>>> >>>>>>>> method: Auth.login([next=DEFAULT [, onvalidation=DEFAULT >>>>>>>> [, onaccept=DEFAULT [, log=DEFAULT]]]]) >>>>>>>> >>>>>>>> """ >>>>>>>> *if self.is_logged_in():* >>>>>>>> * redirect(self.get_vars_next())* >>>>>>>> >>>>>>>> table_user = self.table_user() >>>>>>>> settings = self.settings >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Le mercredi 19 août 2015 14:01:40 UTC-4, Richard a écrit : >>>>>>>>> >>>>>>>>> Nop it only cas_login related... >>>>>>>>> >>>>>>>>> On Wed, Aug 19, 2015 at 2:00 PM, Richard Vézina < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>>> Is the function that perform the check is : allow_access()?? >>>>>>>>>> >>>>>>>>>> On Wed, Aug 19, 2015 at 1:59 PM, Richard Vézina < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> Exactly, I was reading the code figure where the credentials >>>>>>>>>>> check is perform... >>>>>>>>>>> >>>>>>>>>>> I will try to make a PR, if I can find the right place... I will >>>>>>>>>>> send here before what I come up with if you want to review... >>>>>>>>>>> >>>>>>>>>>> Richard >>>>>>>>>>> >>>>>>>>>>> On Wed, Aug 19, 2015 at 1:54 PM, Anthony wrote: >>>>>>>>>>> >>>>>>>>>>>> On Wednesday, August 19, 2015 at 1:20:49 PM UTC-4, Richard >>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> Hello, >>>>>>>>>>>>> >>>>>>>>>>>>> I often, fall on this annoying issue... I alway leaves >>>>>>>>>>>>> multiple tabs all accessing my app open... When the browser get >>>>>>>>>>>>> restart, >>>>>>>>>>>>> all this tabs get redirected to "user/login?_next=..." URL when I >>>>>>>>>>>>> have been >>>>>>>>>>>>> logged out from the system... I found it unpleasant that, if I >>>>>>>>>>>>> log in in >>>>>>>>>>>>> one of the tab, I can't just refresh the other tabs... Reload the >>>>>>>>>>>>> page >>>>>>>>>>>>> still require me to input my credentials again or that I remove >>>>>>>>>>>>> the >>>>>>>>>>>>> "user/login?_next=" from the URL to avoid log in even if I am >>>>>>>>>>>>> logged in... >>>>>>>>>>>>> >>>>>>>>>>>>> I don't know if we could implement something that would make >>>>>>>>>>>>> some redirection to the next URL component on page reload and how >>>>>>>>>>>>> this >>>>>>>>>>>>> could cause overhead of doing so... But it could make this >>>>>>>>>>>>> repetitive task >>>>>>>>>>>>> a memory if it could be implement easilly... >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Maybe early in the Auth.login method, there could be a check to >>>>>>>>>>>> see if the user is already logged in (i.e., check for the >>>>>>>>>>>> existence of >>>>>>>>>>>> self.user) and if there is a _next URL -- in that case, there >>>>>>>>>>>> could just be >>>>>>>>>>>> an immediate redirect to the _next URL without bothering with the >>>>>>>>>>>> login. >>>>>>>>>>>> That way, if you re-login in one tab and then hit refresh in >>>>>>>>>>>> another tab, >>>>>>>>>>>> the other tab will return to its original page. >>>>>>>>>>>> >>>>>>>>>>>> Anthony >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Richard >>>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Resources: >>>>>>>>>>>> - http://web2py.com >>>>>>>>>>>> - http://web2py.com/book (Documentation) >>>>>>>>>>>> - http://github.com/web2py/web2py (Source code) >>>>>>>>>>>> - https://code.google.com/p/web2py/issues/list (Report Issues) >>>>>>>>>>>> --- >>>>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>>>> Google Groups "web2py-users" group. >>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from >>>>>>>>>>>> it, send an email to [email protected]. >>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> -- >>>> Resources: >>>> - http://web2py.com >>>> - http://web2py.com/book (Documentation) >>>> - http://github.com/web2py/web2py (Source code) >>>> - https://code.google.com/p/web2py/issues/list (Report Issues) >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "web2py-users" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> >> -- > Resources: > - http://web2py.com > - http://web2py.com/book (Documentation) > - http://github.com/web2py/web2py (Source code) > - https://code.google.com/p/web2py/issues/list (Report Issues) > --- > You received this message because you are subscribed to the Google Groups > "web2py-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

