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.

Reply via email to